39 lines
1.4 KiB
Diff
39 lines
1.4 KiB
Diff
diff --git a/build/files.c b/build/files.c
|
|
index 6021643..afa01cd 100644
|
|
--- a/build/files.c
|
|
+++ b/build/files.c
|
|
@@ -1711,6 +1711,19 @@ static int generateBuildIDs(FileList fl)
|
|
for (i = 0, flp = fl->files.recs; i < fl->files.used; i++, flp++) {
|
|
struct stat sbuf;
|
|
if (lstat(flp->diskPath, &sbuf) == 0 && S_ISREG (sbuf.st_mode)) {
|
|
+ /* We determine whether this is a main or
|
|
+ debug ELF based on path. */
|
|
+ #define DEBUGPATH "/usr/lib/debug/"
|
|
+ int isDbg = strncmp (flp->cpioPath,
|
|
+ DEBUGPATH, strlen (DEBUGPATH)) == 0;
|
|
+
|
|
+ /* For the main package files mimic what find-debuginfo.sh does.
|
|
+ Only check build-ids for executable files. Debug files are
|
|
+ always non-executable. */
|
|
+ if (!isDbg
|
|
+ && (sbuf.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) == 0)
|
|
+ continue;
|
|
+
|
|
int fd = open (flp->diskPath, O_RDONLY);
|
|
if (fd >= 0) {
|
|
/* Only real ELF files, that are ET_EXEC, ET_DYN or
|
|
@@ -1732,12 +1745,8 @@ static int generateBuildIDs(FileList fl)
|
|
is 128 bits) and 64 bytes (largest sha3 is 512
|
|
bits), common is 20 bytes (sha1 is 160 bits). */
|
|
if (len >= 16 && len <= 64) {
|
|
- /* We determine whether this is a main or
|
|
- debug ELF based on path. */
|
|
- #define DEBUGPATH "/usr/lib/debug/"
|
|
int addid = 0;
|
|
- if (strncmp (flp->cpioPath,
|
|
- DEBUGPATH, strlen (DEBUGPATH)) == 0) {
|
|
+ if (isDbg) {
|
|
needDbg = 1;
|
|
addid = 1;
|
|
}
|