diff options
author | Ed Maste <emaste@FreeBSD.org> | 2021-10-25 21:25:26 +0000 |
---|---|---|
committer | Ed Maste <emaste@FreeBSD.org> | 2021-10-25 21:28:41 +0000 |
commit | 179219ea046f46927d6478d43431e8b541703539 (patch) | |
tree | ab0e9c524102de11c5356ecb5f2c4d4f6cc4a114 /contrib | |
parent | b15b0535968e6c09694c922d0d173956085426d3 (diff) | |
download | src-179219ea046f46927d6478d43431e8b541703539.tar.gz src-179219ea046f46927d6478d43431e8b541703539.zip |
strip/objcopy: handle empty file as unknown
Previously strip reported a somewhat cryptic error for empty files:
strip: elf_begin() failed: Invalid argument
Add a special case to treat empty files as with an unknown file format.
This is consistent with llvm-strip. GNU strip produces no output which
does not seem like useful behaviour (but it does exit with status 1).
Reported by: andrew
Reviewed by: markj
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32648
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/elftoolchain/elfcopy/main.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/contrib/elftoolchain/elfcopy/main.c b/contrib/elftoolchain/elfcopy/main.c index 964d3358de60..264e702ef5af 100644 --- a/contrib/elftoolchain/elfcopy/main.c +++ b/contrib/elftoolchain/elfcopy/main.c @@ -738,6 +738,8 @@ create_file(struct elfcopy *ecp, const char *src, const char *dst) if ((ecp->ein = elf_begin(ifd, ELF_C_READ, NULL)) == NULL) { cleanup_tempfile(tempfile); + if (fstat(ifd, &sb) == 0 && sb.st_size == 0) + errx(EXIT_FAILURE, "file format not recognized"); errx(EXIT_FAILURE, "elf_begin() failed: %s", elf_errmsg(-1)); } |