+/// Add begin object files defined by the target spec.
+fn add_pre_link_objects(cmd: &mut dyn Linker, sess: &'a Session, crate_type: config::CrateType) {
+ let pre_link_objects = if crate_type == config::CrateType::Executable {
+ &sess.target.target.options.pre_link_objects_exe
+ } else {
+ &sess.target.target.options.pre_link_objects_dll
+ };
+ for obj in pre_link_objects {
+ cmd.add_object(&get_object_file_path(sess, obj));
+ }
+
+ if crate_type == config::CrateType::Executable && sess.crt_static(Some(crate_type)) {
+ for obj in &sess.target.target.options.pre_link_objects_exe_crt {
+ cmd.add_object(&get_object_file_path(sess, obj));
+ }
+ }
+}
+
+/// Add end object files defined by the target spec.
+fn add_post_link_objects(cmd: &mut dyn Linker, sess: &'a Session, crate_type: config::CrateType) {
+ for obj in &sess.target.target.options.post_link_objects {
+ cmd.add_object(&get_object_file_path(sess, obj));
+ }
+ if sess.crt_static(Some(crate_type)) {
+ for obj in &sess.target.target.options.post_link_objects_crt {
+ cmd.add_object(&get_object_file_path(sess, obj));
+ }
+ }
+}
+