• R/O
  • HTTP
  • SSH
  • HTTPS

提交

標籤
無標籤

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

GNU Binutils with patches for OS216


Commit MetaInfo

修訂6181e9c2c5ba252ac016f51903dc35d7bfbbca71 (tree)
時間2018-01-12 11:08:23
作者Simon Marchi <simon.marchi@eric...>
CommiterSimon Marchi

Log Message

gdb_compile_shlib: Only consider shlib= options when building executables

Trying to use gdb_compile_shlib with the shlib= option to build a shared
library that depends on another shared library does not work as of
today. See:

The problem is that building the lib is done in two steps, compilation
(.c -> .o) and linking (.o -> .so) and the shlib= options are passed to
both steps. When compiling the object file (.o), it results in gcc
complaining:

gcc: warning: .../solib-vanish-lib2.so: linker input file unused because linking not done

The first solution I came up with was to filter the options inside
gdb_compile_shlib to remove the shlib= options from the options we pass
when compiling the .o file.

I then thought it would be simpler to ignore the shlib= options in
gdb_compile when not building an executable (the executable category
includes the shared libraries). For other compilation types (object
file, preprocess and generate assembly), it doesn't make sense to add
shared libraries to the source file list.

Regtested on the buildbot.

gdb/testsuite/ChangeLog:

* lib/gdb.exp (gdb_compile): Ignore shlib= and shlib_load
options when not creating an executable.

Change Summary

差異

--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
1+2018-01-11 Simon Marchi <simon.marchi@ericsson.com>
2+
3+ * lib/gdb.exp (gdb_compile): Ignore shlib= and shlib_load
4+ options when not creating an executable.
5+
16 2018-01-11 Pedro Alves <palves@redhat.com>
27
38 PR remote/22597
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -3513,7 +3513,8 @@ proc gdb_compile {source dest type options} {
35133513 set shlib_found 0
35143514 set shlib_load 0
35153515 foreach opt $options {
3516- if [regexp {^shlib=(.*)} $opt dummy_var shlib_name] {
3516+ if {[regexp {^shlib=(.*)} $opt dummy_var shlib_name]
3517+ && $type == "executable"} {
35173518 if [test_compiler_info "xlc-*"] {
35183519 # IBM xlc compiler doesn't accept shared library named other
35193520 # than .so: use "-Wl," to bypass this
@@ -3539,7 +3540,7 @@ proc gdb_compile {source dest type options} {
35393540 lappend new_options "early_flags=-Wl,--no-as-needed"
35403541 }
35413542 }
3542- } elseif { $opt == "shlib_load" } {
3543+ } elseif { $opt == "shlib_load" && $type == "executable" } {
35433544 set shlib_load 1
35443545 } else {
35453546 lappend new_options $opt