diff options
| author | ab196087 <none@none> | 2008-03-18 09:17:00 -0700 |
|---|---|---|
| committer | ab196087 <none@none> | 2008-03-18 09:17:00 -0700 |
| commit | ba2be53024c0b999e74ba9adcd7d80fec5df8c57 (patch) | |
| tree | 8d4a064e991d60c2948a5fff7e94617d0c81c7e7 /usr/src/cmd/sgs/rtld | |
| parent | 67004932d7fa76c24b8f7355e7edd136648990a4 (diff) | |
| download | illumos-joyent-ba2be53024c0b999e74ba9adcd7d80fec5df8c57.tar.gz | |
PSARC 2008/179 cross link-editor
6671255 link-editor should support cross linking
--HG--
rename : usr/src/cmd/sgs/libld/common/libld.chk.msg => deleted_files/usr/src/cmd/sgs/libld/common/libld.chk.msg
rename : usr/src/cmd/sgs/libld/common/machsym.intel.c => deleted_files/usr/src/cmd/sgs/libld/common/machsym.intel.c
rename : usr/src/uts/intel/amd64/krtld/relmach.h => deleted_files/usr/src/uts/intel/amd64/krtld/relmach.h
rename : usr/src/uts/intel/ia32/krtld/relmach.h => deleted_files/usr/src/uts/intel/ia32/krtld/relmach.h
rename : usr/src/uts/sparc/krtld/relmach.h => deleted_files/usr/src/uts/sparc/krtld/relmach.h
rename : usr/src/uts/sparc/sys/machelf.h => deleted_files/usr/src/uts/sparc/sys/machelf.h
rename : usr/src/cmd/sgs/include/i386/machdep.h => usr/src/cmd/sgs/include/i386/machdep_x86.h
rename : usr/src/cmd/sgs/include/sparc/machdep.h => usr/src/cmd/sgs/include/sparc/machdep_sparc.h
rename : usr/src/uts/intel/sys/machelf.h => usr/src/uts/common/sys/machelf.h
Diffstat (limited to 'usr/src/cmd/sgs/rtld')
| -rw-r--r-- | usr/src/cmd/sgs/rtld/amd64/amd64_elf.c | 6 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/rtld/common/analyze.c | 10 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/rtld/common/cap.c | 2 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/rtld/common/object.c | 11 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/rtld/common/rtld.sparc.msg | 4 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/rtld/common/setup.c | 2 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/rtld/i386/i386_elf.c | 6 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/rtld/sparc/common_sparc.c | 4 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/rtld/sparc/sparc_elf.c | 4 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/rtld/sparcv9/sparc_elf.c | 5 |
10 files changed, 30 insertions, 24 deletions
diff --git a/usr/src/cmd/sgs/rtld/amd64/amd64_elf.c b/usr/src/cmd/sgs/rtld/amd64/amd64_elf.c index 553ace28ba..b2e9584c4e 100644 --- a/usr/src/cmd/sgs/rtld/amd64/amd64_elf.c +++ b/usr/src/cmd/sgs/rtld/amd64/amd64_elf.c @@ -408,7 +408,7 @@ elf_reloc_relative(ulong_t relbgn, ulong_t relend, ulong_t relsiz, if (relbgn >= relend) break; - rtype = ELF_R_TYPE(((Rela *)relbgn)->r_info); + rtype = ELF_R_TYPE(((Rela *)relbgn)->r_info, M_MACH); roffset = ((Rela *)relbgn)->r_offset; } while (rtype == R_AMD64_RELATIVE); @@ -579,7 +579,7 @@ elf_reloc(Rt_map *lmp, uint_t plt) while (relbgn < relend) { uint_t sb_flags = 0; - rtype = ELF_R_TYPE(((Rela *)relbgn)->r_info); + rtype = ELF_R_TYPE(((Rela *)relbgn)->r_info, M_MACH); /* * If this is a RELATIVE relocation in a shared object (the @@ -615,7 +615,7 @@ elf_reloc(Rt_map *lmp, uint_t plt) if (relbgn >= relend) break; - rtype = ELF_R_TYPE(((Rela *)relbgn)->r_info); + rtype = ELF_R_TYPE(((Rela *)relbgn)->r_info, M_MACH); } roffset = ((Rela *)relbgn)->r_offset; diff --git a/usr/src/cmd/sgs/rtld/common/analyze.c b/usr/src/cmd/sgs/rtld/common/analyze.c index 0c6fe92678..6ed3b0473c 100644 --- a/usr/src/cmd/sgs/rtld/common/analyze.c +++ b/usr/src/cmd/sgs/rtld/common/analyze.c @@ -897,7 +897,7 @@ trace_so(Rt_map *clmp, Rej_desc *rej, const char *name, const char *path, /* LINTED */ (void) snprintf(_reject, PATH_MAX, MSG_INTL(ldd_reject[rej->rej_type]), - conv_reject_desc(rej, &rej_buf)); + conv_reject_desc(rej, &rej_buf, M_MACH)); if (rej->rej_name) path = rej->rej_name; reject = (char *)_reject; @@ -1162,7 +1162,7 @@ file_notfound(Lm_list *lml, const char *name, Rt_map *clmp, uint_t flags, eprintf(lml, ERR_FATAL, MSG_INTL(err_reject[rej->rej_type]), rej->rej_name ? rej->rej_name : MSG_INTL(MSG_STR_UNKNOWN), - conv_reject_desc(rej, &rej_buf)); + conv_reject_desc(rej, &rej_buf, M_MACH)); return; } @@ -1364,7 +1364,7 @@ file_open(int err, Lm_list *lml, const char *oname, const char *nname, } rej->rej_name = nname; rej->rej_flag = (fdesc->fd_flags & FLG_FD_ALTER); - DBG_CALL(Dbg_file_rejected(lml, rej)); + DBG_CALL(Dbg_file_rejected(lml, rej, M_MACH)); } return (0); } @@ -2232,7 +2232,7 @@ _load_path(Lm_list *lml, Aliste lmco, const char **oname, Rt_map *clmp, _rej.rej_name = name; _rej.rej_type = SGS_REJ_STR; _rej.rej_str = MSG_INTL(MSG_GEN_NOOPEN); - DBG_CALL(Dbg_file_rejected(lml, &_rej)); + DBG_CALL(Dbg_file_rejected(lml, &_rej, M_MACH)); rejection_inherit(rej, &_rej); remove_so(lml, nlmp); return (0); @@ -2266,7 +2266,7 @@ _load_path(Lm_list *lml, Aliste lmco, const char **oname, Rt_map *clmp, _rej.rej_name = name; _rej.rej_type = SGS_REJ_STR; _rej.rej_str = strerror(ENOENT); - DBG_CALL(Dbg_file_rejected(lml, &_rej)); + DBG_CALL(Dbg_file_rejected(lml, &_rej, M_MACH)); rejection_inherit(rej, &_rej); return (0); } diff --git a/usr/src/cmd/sgs/rtld/common/cap.c b/usr/src/cmd/sgs/rtld/common/cap.c index 77d38b6c50..be646b40f3 100644 --- a/usr/src/cmd/sgs/rtld/common/cap.c +++ b/usr/src/cmd/sgs/rtld/common/cap.c @@ -166,7 +166,7 @@ hwcap_dir(Alist **fdalpp, Lm_list *lml, const char *name, Rt_map *clmp, _rej.rej_type = SGS_REJ_STR; _rej.rej_name = name; _rej.rej_str = strerror(errno); - DBG_CALL(Dbg_file_rejected(lml, &_rej)); + DBG_CALL(Dbg_file_rejected(lml, &_rej, M_MACH)); rejection_inherit(rej, &_rej); return (0); } diff --git a/usr/src/cmd/sgs/rtld/common/object.c b/usr/src/cmd/sgs/rtld/common/object.c index ec5968d7b9..a654b632f2 100644 --- a/usr/src/cmd/sgs/rtld/common/object.c +++ b/usr/src/cmd/sgs/rtld/common/object.c @@ -79,8 +79,15 @@ elf_obj_init(Lm_list *lml, Aliste lmco, const char *name) return (0); /* - * Obtain a generic set of entrance criteria (this is the first call to - * libld.so, which will effectively lazyload it). + * Configure libld.so to process objects of the desired target + * type (this is the first call to libld.so, which will effectively + * lazyload it). + */ + if (ld_init_target(lml, M_MACH) != 0) + return (0); + + /* + * Obtain a generic set of entrance criteria */ if (ld_ent_setup(ofl, syspagsz) == S_ERROR) return (0); diff --git a/usr/src/cmd/sgs/rtld/common/rtld.sparc.msg b/usr/src/cmd/sgs/rtld/common/rtld.sparc.msg index 828789fe7d..bd09eb79c7 100644 --- a/usr/src/cmd/sgs/rtld/common/rtld.sparc.msg +++ b/usr/src/cmd/sgs/rtld/common/rtld.sparc.msg @@ -1,5 +1,5 @@ # -# Copyright 2007 Sun Microsystems, Inc. All rights reserved. +# Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # CDDL HEADER START @@ -37,8 +37,6 @@ value 0x%llx loses %d bits at offset 0x%llx" @ MSG_REL_NOFIT "relocation error: %s: file %s: symbol %s: \ value 0x%llx does not fit" -@ MSG_REL_NOSWAP "relocation error: %s: file %s: symbol %s: \ - linker does not support byte swapping relocated data" @ MSG_REL_BADREG "relocation error: file %s: REGISTER relocation \ against bad register offset: 0x%llx" diff --git a/usr/src/cmd/sgs/rtld/common/setup.c b/usr/src/cmd/sgs/rtld/common/setup.c index 04ab939b4d..e798952478 100644 --- a/usr/src/cmd/sgs/rtld/common/setup.c +++ b/usr/src/cmd/sgs/rtld/common/setup.c @@ -418,7 +418,7 @@ setup(char **envp, auxv_t *auxv, Word _flags, char *_platform, int _syspagsz, eprintf(&lml_main, ERR_FATAL, MSG_INTL(err_reject[rej.rej_type]), argvname, - conv_reject_desc(&rej, &rej_buf)); + conv_reject_desc(&rej, &rej_buf, M_MACH)); return (0); } diff --git a/usr/src/cmd/sgs/rtld/i386/i386_elf.c b/usr/src/cmd/sgs/rtld/i386/i386_elf.c index 30569449fe..7335714a6a 100644 --- a/usr/src/cmd/sgs/rtld/i386/i386_elf.c +++ b/usr/src/cmd/sgs/rtld/i386/i386_elf.c @@ -385,7 +385,7 @@ elf_reloc_relative(ulong_t relbgn, ulong_t relend, ulong_t relsiz, if (relbgn >= relend) break; - rtype = ELF_R_TYPE(((Rel *)relbgn)->r_info); + rtype = ELF_R_TYPE(((Rel *)relbgn)->r_info, M_MACH); roffset = ((Rel *)relbgn)->r_offset; } while (rtype == R_386_RELATIVE); @@ -555,7 +555,7 @@ elf_reloc(Rt_map *lmp, uint_t plt) while (relbgn < relend) { uint_t sb_flags = 0; - rtype = ELF_R_TYPE(((Rel *)relbgn)->r_info); + rtype = ELF_R_TYPE(((Rel *)relbgn)->r_info, M_MACH); /* * If this is a RELATIVE relocation in a shared object (the @@ -591,7 +591,7 @@ elf_reloc(Rt_map *lmp, uint_t plt) } if (relbgn >= relend) break; - rtype = ELF_R_TYPE(((Rel *)relbgn)->r_info); + rtype = ELF_R_TYPE(((Rel *)relbgn)->r_info, M_MACH); } roffset = ((Rel *)relbgn)->r_offset; diff --git a/usr/src/cmd/sgs/rtld/sparc/common_sparc.c b/usr/src/cmd/sgs/rtld/sparc/common_sparc.c index 941a3987b1..4f893a8466 100644 --- a/usr/src/cmd/sgs/rtld/sparc/common_sparc.c +++ b/usr/src/cmd/sgs/rtld/sparc/common_sparc.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #pragma ident "%Z%%M% %I% %E% SMI" @@ -201,7 +201,7 @@ elf_reloc_relative(ulong_t relbgn, ulong_t relend, ulong_t relsiz, if (relbgn >= relend) break; - rtype = (Byte)ELF_R_TYPE(((Rela *)relbgn)->r_info); + rtype = (Byte)ELF_R_TYPE(((Rela *)relbgn)->r_info, M_MACH); roffset = ((Rela *)relbgn)->r_offset; } while (rtype == R_SPARC_RELATIVE); diff --git a/usr/src/cmd/sgs/rtld/sparc/sparc_elf.c b/usr/src/cmd/sgs/rtld/sparc/sparc_elf.c index be792582f0..635e508fdd 100644 --- a/usr/src/cmd/sgs/rtld/sparc/sparc_elf.c +++ b/usr/src/cmd/sgs/rtld/sparc/sparc_elf.c @@ -642,7 +642,7 @@ elf_reloc(Rt_map *lmp, uint_t plt) Addr vaddr; uint_t sb_flags = 0; - rtype = ELF_R_TYPE(((Rela *)relbgn)->r_info); + rtype = ELF_R_TYPE(((Rela *)relbgn)->r_info, M_MACH); /* * If this is a RELATIVE relocation in a shared object (the @@ -677,7 +677,7 @@ elf_reloc(Rt_map *lmp, uint_t plt) } if (relbgn >= relend) break; - rtype = ELF_R_TYPE(((Rela *)relbgn)->r_info); + rtype = ELF_R_TYPE(((Rela *)relbgn)->r_info, M_MACH); } roffset = ((Rela *)relbgn)->r_offset; diff --git a/usr/src/cmd/sgs/rtld/sparcv9/sparc_elf.c b/usr/src/cmd/sgs/rtld/sparcv9/sparc_elf.c index 8c93cbb852..0f56741c08 100644 --- a/usr/src/cmd/sgs/rtld/sparcv9/sparc_elf.c +++ b/usr/src/cmd/sgs/rtld/sparcv9/sparc_elf.c @@ -885,7 +885,7 @@ elf_reloc(Rt_map *lmp, uint_t plt) Addr vaddr; uint_t sb_flags = 0; - rtype = (Byte)ELF_R_TYPE(((Rela *)relbgn)->r_info); + rtype = (Byte)ELF_R_TYPE(((Rela *)relbgn)->r_info, M_MACH); /* * If this is a RELATIVE relocation in a shared object @@ -921,7 +921,8 @@ elf_reloc(Rt_map *lmp, uint_t plt) } if (relbgn >= relend) break; - rtype = (Byte)ELF_R_TYPE(((Rela *)relbgn)->r_info); + rtype = (Byte)ELF_R_TYPE(((Rela *)relbgn)->r_info, + M_MACH); } roffset = ((Rela *)relbgn)->r_offset; |
