mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 12:34:43 +00:00
Compare commits
4 Commits
2c04980a96
...
users/nalc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a509c37fed | ||
|
|
902e18df6d | ||
|
|
e5ac6cfdf2 | ||
|
|
dd6d1901e6 |
10
libctf/configure
vendored
10
libctf/configure
vendored
@@ -15966,6 +15966,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
|
||||
case "${host}" in
|
||||
# PR libctf/29292
|
||||
# libctf's use of mmap doesn't work on Solaris 11.4, so disable it.
|
||||
*-*-solaris2.11*)
|
||||
ac_cv_func_mmap_fixed_mapped=no
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -17015,7 +17023,7 @@ if test -n "$decommented_version_script"; then
|
||||
# used by GNU ld. Use cpp to strip the comments out. (cpp exists under this
|
||||
# name on all platforms that support ld -z gnu-version-script.)
|
||||
/lib/cpp < $srcdir/libctf.ver > libctf-decommented.ver
|
||||
/lib/cpp < $srcdir/libctf-nobfd.ver > libctf-nobfd-decommented.ver
|
||||
/lib/cpp < libctf-nobfd.ver > libctf-nobfd-decommented.ver
|
||||
VERSION_FLAGS="$ac_cv_libctf_version_script='libctf-decommented.ver'"
|
||||
VERSION_FLAGS_NOBFD="$ac_cv_libctf_version_script='libctf-nobfd-decommented.ver'"
|
||||
elif test -z "$no_version_script"; then
|
||||
|
||||
@@ -65,6 +65,14 @@ AM_MAINTAINER_MODE
|
||||
AM_INSTALL_LIBBFD
|
||||
ACX_PROG_CC_WARNING_OPTS([-Wall], [ac_libctf_warn_cflags])
|
||||
|
||||
case "${host}" in
|
||||
# PR libctf/29292
|
||||
# libctf's use of mmap doesn't work on Solaris 11.4, so disable it.
|
||||
*-*-solaris2.11*)
|
||||
ac_cv_func_mmap_fixed_mapped=no
|
||||
;;
|
||||
esac
|
||||
|
||||
GCC_AC_FUNC_MMAP
|
||||
# Needed for BFD capability checks.
|
||||
AC_SEARCH_LIBS(dlsym, dl)
|
||||
@@ -293,7 +301,7 @@ if test -n "$decommented_version_script"; then
|
||||
# used by GNU ld. Use cpp to strip the comments out. (cpp exists under this
|
||||
# name on all platforms that support ld -z gnu-version-script.)
|
||||
/lib/cpp < $srcdir/libctf.ver > libctf-decommented.ver
|
||||
/lib/cpp < $srcdir/libctf-nobfd.ver > libctf-nobfd-decommented.ver
|
||||
/lib/cpp < libctf-nobfd.ver > libctf-nobfd-decommented.ver
|
||||
VERSION_FLAGS="$ac_cv_libctf_version_script='libctf-decommented.ver'"
|
||||
VERSION_FLAGS_NOBFD="$ac_cv_libctf_version_script='libctf-nobfd-decommented.ver'"
|
||||
elif test -z "$no_version_script"; then
|
||||
|
||||
@@ -74,6 +74,12 @@ ctf_symtab_skippable (ctf_link_sym_t *sym)
|
||||
|| sym->st_shndx == SHN_UNDEF
|
||||
|| strcmp (sym->st_name, "_START_") == 0
|
||||
|| strcmp (sym->st_name, "_END_") == 0
|
||||
|| strcmp (sym->st_name, "_DYNAMIC") == 0
|
||||
|| strcmp (sym->st_name, "_GLOBAL_OFFSET_TABLE_") == 0
|
||||
|| strcmp (sym->st_name, "_PROCEDURE_LINKAGE_TABLE_") == 0
|
||||
|| strcmp (sym->st_name, "_edata") == 0
|
||||
|| strcmp (sym->st_name, "_end") == 0
|
||||
|| strcmp (sym->st_name, "_etext") == 0
|
||||
|| (sym->st_type == STT_OBJECT && sym->st_shndx == SHN_EXTABS
|
||||
&& sym->st_value == 0));
|
||||
}
|
||||
|
||||
@@ -34,6 +34,10 @@ if ![info exists as] then {
|
||||
set as [findfile $base_dir/../gas/as-new $base_dir/../gas/as-new [transform as]]
|
||||
}
|
||||
|
||||
if ![info exists objdump] then {
|
||||
set objdump [findfile $base_dir/../binutils/objdump]
|
||||
}
|
||||
|
||||
remote_exec host "mkdir -p tmpdir"
|
||||
|
||||
# Make symlinks from tmpdir/libctf to the linker and assembler in the
|
||||
@@ -63,10 +67,12 @@ if {![info exists CFLAGS_FOR_TARGET]} {
|
||||
if ![info exists AR] then {
|
||||
set AR [findfile $base_dir/../binutils/ar]
|
||||
}
|
||||
|
||||
if {![info exists OBJDUMP]} {
|
||||
set OBJDUMP [findfile $base_dir/../binutils/objdump]
|
||||
}
|
||||
if ![info exists OBJDUMPFLAGS] then {
|
||||
set OBJDUMPFLAGS {}
|
||||
}
|
||||
|
||||
# load the utility procedures
|
||||
load_lib ctf-lib.exp
|
||||
|
||||
@@ -20,6 +20,51 @@
|
||||
|
||||
load_file $srcdir/../../ld/testsuite/lib/ld-lib.exp
|
||||
|
||||
# Returns true if the target linker deduplicates CTF.
|
||||
proc check_ctf_linker_dedup { } {
|
||||
global ctf_linker_dedup_saved
|
||||
|
||||
if {![info exists ctf_linker_dedup_saved]} {
|
||||
set ctf_linker_dedup_saved 0
|
||||
|
||||
if ([check_ctf_available]) {
|
||||
global objdump srcdir
|
||||
|
||||
set basename "tmpdir/ctf_linker_dedups[pid]"
|
||||
compile_one_cc $srcdir/libctf-lookup/ambiguous-struct-A.c ${basename}-A.o "-gctf -fPIC -c"
|
||||
compile_one_cc $srcdir/libctf-lookup/ambiguous-struct-B.c ${basename}-B.o "-gctf -fPIC -c"
|
||||
compile_one_cc "${basename}-A.o ${basename}-B.o" $basename.so "-gctf -fPIC -shared"
|
||||
if {! [remote_file host exists $basename.so] } {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Don't use run_host_cmd: it dumps the entire output into the log,
|
||||
# even on success.
|
||||
set cmdret [remote_exec host [concat sh -c [list "$objdump --ctf $basename.so >dump.out 2>dump.err"]] "" "/dev/null"]
|
||||
set cmdret [lindex $cmdret 0]
|
||||
remote_upload host "dump.out"
|
||||
remote_upload host "dump.err"
|
||||
set dump_out [prune_warnings [file_contents "dump.out"]]
|
||||
set dump_err [prune_warnings [file_contents "dump.err"]]
|
||||
remote_file host delete "dump.out" "dump.err"
|
||||
remote_file build delete "dump.out" "dump.err"
|
||||
|
||||
if {$cmdret != 0} {
|
||||
verbose -log "failed with $cmdret: stderr: $dump_err"
|
||||
verbose -log "output: $dump_out"
|
||||
return 0;
|
||||
}
|
||||
|
||||
remote_file host delete $basename.so ${basename}-A.o ${basename}-B.o
|
||||
if [regexp {CTF archive member: } $dump_out] {
|
||||
set ctf_linker_dedup_saved 1
|
||||
}
|
||||
}
|
||||
}
|
||||
return $ctf_linker_dedup_saved
|
||||
}
|
||||
|
||||
|
||||
proc run_native_host_cmd { command } {
|
||||
global link_output
|
||||
global ld
|
||||
|
||||
@@ -28,6 +28,11 @@ if {![check_ctf_available]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![check_ctf_linker_dedup]} {
|
||||
unsupported "no CTF deduplication support in the linker"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {[info exists env(LC_ALL)]} {
|
||||
set old_lc_all $env(LC_ALL)
|
||||
}
|
||||
|
||||
@@ -37,6 +37,11 @@ if {![check_ctf_available]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![check_ctf_linker_dedup]} {
|
||||
unsupported "no CTF deduplication support in the linker"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {[info exists env(LC_ALL)]} {
|
||||
set old_lc_all $env(LC_ALL)
|
||||
}
|
||||
|
||||
@@ -23,6 +23,11 @@ if {![check_ctf_available]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![check_ctf_linker_dedup]} {
|
||||
unsupported "no CTF deduplication support in the linker"
|
||||
return 0
|
||||
}
|
||||
|
||||
if ![is_elf_format] {
|
||||
unsupported "CTF needs bfd changes to be emitted on non-ELF"
|
||||
return 0
|
||||
|
||||
Reference in New Issue
Block a user