return $memory_seal_available_saved
}
+proc check_rosegment_support { } {
+ global rosegment_available_saved
+ global ld
+
+ if {![info exists rosegment_available_saved]} {
+ set ld_output [remote_exec host $ld "--no-rosegment"]
+ if { [string first "not supported" $ld_output] >= 0
+ || [string first "unrecognized option" $ld_output] >= 0
+ || [string first "--no-rosegment ignored" $ld_output] >= 0 } {
+ set rosegment_available_saved 0
+ } else {
+ set rosegment_available_saved 1
+ }
+ }
+ return $rosegment_available_saved
+}
+
# Check for support of the .noinit section, used for data that is not
# initialized at load, or during the application's initialization sequence.
proc supports_noinit_section {} {
global SIZE SIZEFLAGS
global copyfile env runtests srcdir subdir verbose base_dir
global DT_RELR_LDFLAGS NO_DT_RELR_LDFLAGS
+ global NO_ROSEGMENT_LDFLAGS
if [string match "*/*" $name] {
set file $name
[list \
"Build no PLT (dynamic 1a)" \
"$NOPIE_LDFLAGS tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
- tmpdir/no-plt-func1.o tmpdir/no-plt-extern1.o" \
+ -Wl,--no-rosegment tmpdir/no-plt-func1.o tmpdir/no-plt-extern1.o" \
"-Wa,-mx86-used-note=yes" \
{dummy.s} \
{{readelf -Wr no-plt-1a.rd} {objdump -dwrj.text no-plt-1a.dd}} \
] \
[list \
"Build no PLT (dynamic 1b)" \
- "tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
+ "-Wl,--no-rosegment tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
tmpdir/libno-plt-1a.so tmpdir/libno-plt-1b.so" \
"-Wa,-mx86-used-note=yes" \
{dummy.s} \
[list \
"Build no PLT (dynamic 1c)" \
"$NOPIE_LDFLAGS tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
- tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
+ -Wl,--no-rosegment tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
"-Wa,-mx86-used-note=yes" \
{dummy.s} \
{{readelf -Wr no-plt-1c.rd} {objdump -dwrj.text no-plt-1c.dd}} \
[list \
"Build no PLT (static 1d)" \
"-static tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
- tmpdir/no-plt-func1.o tmpdir/no-plt-extern1.o" \
+ -Wl,--no-rosegment tmpdir/no-plt-func1.o tmpdir/no-plt-extern1.o" \
"-Wa,-mx86-used-note=yes" \
{dummy.s} \
{{readelf -Wr no-plt-1d.rd} {objdump -dwrj.text no-plt-1d.dd}} \
[list \
"Build no PLT (PIE 1e)" \
"-pie tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
- tmpdir/no-plt-func1.o tmpdir/no-plt-extern1.o" \
+ -Wl,--no-rosegment tmpdir/no-plt-func1.o tmpdir/no-plt-extern1.o" \
"-Wa,-mx86-used-note=yes" \
{dummy.s} \
{{readelf -Wr no-plt-1e.rd} {nm -gD no-plt-1e.nd} {objdump -dwrj.text no-plt-1e.dd}} \
[list \
"Build no PLT (PIE 1f)" \
"-pie tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
- tmpdir/libno-plt-1a.so tmpdir/libno-plt-1b.so" \
+ -Wl,--no-rosegment tmpdir/libno-plt-1a.so tmpdir/libno-plt-1b.so" \
"-Wa,-mx86-used-note=yes" \
{ dummy.s } \
{{readelf -Wr no-plt-1f.rd} {objdump -dwrj.text no-plt-1f.dd}} \
[list \
"Build no PLT (PIE 1g)" \
"-pie tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
- tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
+ -Wl,--no-rosegment tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
"-Wa,-mx86-used-note=yes" \
{ dummy.s } \
{{readelf -Wr no-plt-1g.rd} {objdump -dwrj.text no-plt-1g.dd}} \