add ../../lib to rpath for vendor fuzz targets
For "normal" fuzz targets, the binary goes in /data/fuzz/<arch>/<fuzzer_name>/fuzzer_name> with libraries in /data/fuzz/<arch>/lib/ If 'vendor: true' is set, the fuzz target binary get placed in /data/fuzz/<arch>/<fuzzer_name>/vendor/<fuzzer_name>. We need an extra '..' in the rpath to link to the included libraries correctly. Bug: 254723623 Test: built libsrtp2-fuzzer, checked linking with ldd Change-Id: I24282d7b252142ed795a6091fece2d56125329dc
This commit is contained in:
11
cc/fuzz.go
11
cc/fuzz.go
@@ -137,9 +137,18 @@ func (fuzz *fuzzBinary) linkerFlags(ctx ModuleContext, flags Flags) Flags {
|
||||
// RunPaths on devices isn't instantiated by the base linker. `../lib` for
|
||||
// installed fuzz targets (both host and device), and `./lib` for fuzz
|
||||
// target packages.
|
||||
flags.Local.LdFlags = append(flags.Local.LdFlags, `-Wl,-rpath,\$$ORIGIN/../lib`)
|
||||
flags.Local.LdFlags = append(flags.Local.LdFlags, `-Wl,-rpath,\$$ORIGIN/lib`)
|
||||
|
||||
// When running on device, fuzz targets with vendor: true set will be in
|
||||
// fuzzer_name/vendor/fuzzer_name (note the extra 'vendor' and thus need to
|
||||
// link with libraries in ../../lib/. Non-vendor binaries only need to look
|
||||
// one level up, in ../lib/.
|
||||
if ctx.inVendor() {
|
||||
flags.Local.LdFlags = append(flags.Local.LdFlags, `-Wl,-rpath,\$$ORIGIN/../../lib`)
|
||||
} else {
|
||||
flags.Local.LdFlags = append(flags.Local.LdFlags, `-Wl,-rpath,\$$ORIGIN/../lib`)
|
||||
}
|
||||
|
||||
return flags
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user