summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/ChangeLog4
-rw-r--r--lib/eu-config.h4
-rw-r--r--libdwfl/ChangeLog15
-rw-r--r--libdwfl/argp-std.c2
-rw-r--r--libdwfl/dwfl_build_id_find_elf.c4
-rw-r--r--libdwfl/dwfl_module_getdwarf.c2
-rw-r--r--libdwfl/dwfl_report_elf.c2
-rw-r--r--libdwfl/dwfl_segment_report_module.c2
-rw-r--r--libdwfl/find-debuginfo.c2
-rw-r--r--libdwfl/link_map.c4
-rw-r--r--libdwfl/linux-kernel-modules.c20
-rw-r--r--libdwfl/linux-pid-attach.c6
-rw-r--r--libdwfl/linux-proc-maps.c10
-rw-r--r--libdwfl/offline.c2
-rw-r--r--libelf/ChangeLog4
-rw-r--r--libelf/nlist.c2
-rw-r--r--src/ChangeLog17
-rw-r--r--src/ar.c16
-rw-r--r--src/elfcmp.c2
-rw-r--r--src/elfcompress.c4
-rw-r--r--src/elflint.c2
-rw-r--r--src/findtextrel.c4
-rw-r--r--src/nm.c2
-rw-r--r--src/objdump.c2
-rw-r--r--src/ranlib.c2
-rw-r--r--src/readelf.c2
-rw-r--r--src/size.c2
-rw-r--r--src/stack.c2
-rw-r--r--src/strings.c2
-rw-r--r--src/strip.c4
-rw-r--r--src/unstrip.c4
-rw-r--r--tests/ChangeLog57
-rw-r--r--tests/alldts.c2
-rw-r--r--tests/allfcts.c4
-rw-r--r--tests/arextract.c4
-rw-r--r--tests/arls.c2
-rw-r--r--tests/arsymtest.c4
-rw-r--r--tests/asm-tst1.c2
-rw-r--r--tests/asm-tst2.c2
-rw-r--r--tests/asm-tst3.c2
-rw-r--r--tests/asm-tst7.c2
-rw-r--r--tests/asm-tst8.c2
-rw-r--r--tests/asm-tst9.c2
-rw-r--r--tests/backtrace-data.c2
-rw-r--r--tests/buildid.c2
-rw-r--r--tests/debugaltlink.c2
-rw-r--r--tests/debuglink.c2
-rw-r--r--tests/dwarf-getmacros.c2
-rw-r--r--tests/dwarf-getstring.c2
-rw-r--r--tests/dwarf-ranges.c2
-rw-r--r--tests/dwelfgnucompressed.c2
-rw-r--r--tests/early-offscn.c2
-rw-r--r--tests/ecp.c5
-rw-r--r--tests/elfgetchdr.c2
-rw-r--r--tests/elfgetzdata.c2
-rw-r--r--tests/elfputzdata.c2
-rw-r--r--tests/elfshphehdr.c2
-rw-r--r--tests/elfstrmerge.c4
-rw-r--r--tests/elfstrtab.c6
-rw-r--r--tests/emptyfile.c6
-rw-r--r--tests/fillfile.c6
-rw-r--r--tests/get-aranges.c2
-rw-r--r--tests/get-files.c2
-rw-r--r--tests/get-lines.c2
-rw-r--r--tests/get-pubnames.c2
-rw-r--r--tests/getsrc_die.c2
-rw-r--r--tests/newdata.c8
-rw-r--r--tests/rdwrmmap.c2
-rw-r--r--tests/rerequest_tag.c2
-rw-r--r--tests/saridx.c2
-rw-r--r--tests/scnnames.c2
-rw-r--r--tests/sectiondump.c2
-rw-r--r--tests/show-abbrev.c2
-rw-r--r--tests/show-die-info.c2
-rw-r--r--tests/showptable.c2
-rw-r--r--tests/strptr.c2
-rw-r--r--tests/test-elf_cntl_gelf_getshdr.c2
-rw-r--r--tests/test-flag-nobits.c2
-rw-r--r--tests/typeiter.c2
-rw-r--r--tests/typeiter2.c2
-rw-r--r--tests/update1.c2
-rw-r--r--tests/update2.c2
-rw-r--r--tests/update3.c2
-rw-r--r--tests/update4.c2
-rw-r--r--tests/vendorelf.c4
-rw-r--r--tests/zstrptr.c2
86 files changed, 226 insertions, 122 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 321513ca..9fa8ff0f 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,5 +1,9 @@
2017-05-04 Ulf Hermann <[email protected]>
+ * eu-config.h: Define O_BINARY to 0 if it doesn't exist.
+
+2017-05-04 Ulf Hermann <[email protected]>
+
* eu-config.h: Define unlocked I/O functions to locked ones if they
are unavailable.
diff --git a/lib/eu-config.h b/lib/eu-config.h
index 65300442..f2d91753 100644
--- a/lib/eu-config.h
+++ b/lib/eu-config.h
@@ -234,4 +234,8 @@ asm (".section predict_data, \"aw\"; .previous\n"
#define putchar_unlocked(x) putchar (x)
#endif
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
#endif /* eu-config.h */
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index 26a3599b..6f3a5611 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,18 @@
+2017-05-04 Ulf Hermann <[email protected]>
+
+ * argp-std.c: Open files in O_BINARY.
+ * dwfl_build_id_find_elf.c: Likewise.
+ * dwfl_build_id_find_elf.c: Likewise.
+ * dwfl_module_getdwarf.c: Likewise.
+ * dwfl_report_elf.c: Likewise.
+ * dwfl_segment_report_module.c: Likewise.
+ * find-debuginfo.c: Likewise.
+ * link_map.c: Likewise.
+ * linux-kernel-modules.c: Likewise.
+ * linux-pid-attach.c: Likewise.
+ * linux-proc-maps.c: Likewise.
+ * offline.c: Likewise.
+
2017-04-27 Ulf Hermann <[email protected]>
* linux-kernel-modules.c: Don't include system.h.
diff --git a/libdwfl/argp-std.c b/libdwfl/argp-std.c
index 347a05b4..012eb0c7 100644
--- a/libdwfl/argp-std.c
+++ b/libdwfl/argp-std.c
@@ -277,7 +277,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
if (opt->core)
{
- int fd = open (opt->core, O_RDONLY);
+ int fd = open (opt->core, O_RDONLY | O_BINARY);
if (fd < 0)
{
int code = errno;
diff --git a/libdwfl/dwfl_build_id_find_elf.c b/libdwfl/dwfl_build_id_find_elf.c
index ee0c1646..6ce2c1cc 100644
--- a/libdwfl/dwfl_build_id_find_elf.c
+++ b/libdwfl/dwfl_build_id_find_elf.c
@@ -94,7 +94,7 @@ __libdwfl_open_by_build_id (Dwfl_Module *mod, bool debug, char **file_name,
break;
memcpy (mempcpy (name, dir, dirlen), id_name, sizeof id_name);
- fd = TEMP_FAILURE_RETRY (open (name, O_RDONLY));
+ fd = TEMP_FAILURE_RETRY (open (name, O_RDONLY | O_BINARY));
if (fd >= 0)
{
if (*file_name != NULL)
@@ -154,7 +154,7 @@ dwfl_build_id_find_elf (Dwfl_Module *mod,
recorded executable file when MOD was identified as main executable
(which then triggers opening and reporting of the executable). */
const char *executable = mod->dwfl->user_core->executable_for_core;
- int fd = open (executable, O_RDONLY);
+ int fd = open (executable, O_RDONLY | O_BINARY);
if (fd >= 0)
{
*file_name = strdup (executable);
diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c
index 9775aced..f6380934 100644
--- a/libdwfl/dwfl_module_getdwarf.c
+++ b/libdwfl/dwfl_module_getdwarf.c
@@ -51,7 +51,7 @@ open_elf_file (Elf **elf, int *fd, char **name)
/* If there was a pre-primed file name left that the callback left
behind, try to open that file name. */
if (*fd < 0 && *name != NULL)
- *fd = TEMP_FAILURE_RETRY (open (*name, O_RDONLY));
+ *fd = TEMP_FAILURE_RETRY (open (*name, O_RDONLY | O_BINARY));
if (*fd < 0)
return CBFAIL;
diff --git a/libdwfl/dwfl_report_elf.c b/libdwfl/dwfl_report_elf.c
index 6950a37b..d4d3feb9 100644
--- a/libdwfl/dwfl_report_elf.c
+++ b/libdwfl/dwfl_report_elf.c
@@ -295,7 +295,7 @@ dwfl_report_elf (Dwfl *dwfl, const char *name, const char *file_name, int fd,
if (fd < 0)
{
closefd = true;
- fd = open (file_name, O_RDONLY);
+ fd = open (file_name, O_RDONLY | O_BINARY);
if (fd < 0)
{
__libdwfl_seterrno (DWFL_E_ERRNO);
diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c
index 207a2573..cd8f6135 100644
--- a/libdwfl/dwfl_segment_report_module.c
+++ b/libdwfl/dwfl_segment_report_module.c
@@ -688,7 +688,7 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
name = file_note_name;
name_is_final = true;
bool invalid = false;
- fd = open (name, O_RDONLY);
+ fd = open (name, O_RDONLY | O_BINARY);
if (fd >= 0)
{
Dwfl_Error error = __libdw_open_file (&fd, &elf, true, false);
diff --git a/libdwfl/find-debuginfo.c b/libdwfl/find-debuginfo.c
index 6d5a42a6..7f7e1081 100644
--- a/libdwfl/find-debuginfo.c
+++ b/libdwfl/find-debuginfo.c
@@ -58,7 +58,7 @@ try_open (const struct stat *main_stat,
return -1;
struct stat st;
- int fd = TEMP_FAILURE_RETRY (open (fname, O_RDONLY));
+ int fd = TEMP_FAILURE_RETRY (open (fname, O_RDONLY | O_BINARY));
if (fd < 0)
free (fname);
else if (fstat (fd, &st) == 0
diff --git a/libdwfl/link_map.c b/libdwfl/link_map.c
index 794668fc..4a50c441 100644
--- a/libdwfl/link_map.c
+++ b/libdwfl/link_map.c
@@ -393,7 +393,7 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata,
{
/* This code is mostly inlined dwfl_report_elf. */
// XXX hook for sysroot
- int fd = open (name, O_RDONLY);
+ int fd = open (name, O_RDONLY | O_BINARY);
if (fd >= 0)
{
Elf *elf;
@@ -808,7 +808,7 @@ dwfl_link_map_report (Dwfl *dwfl, const void *auxv, size_t auxv_size,
EXECUTABLE_FOR_CORE to find where DYNAMIC is located in the
core file. */
- int fd = open (dwfl->user_core->executable_for_core, O_RDONLY);
+ int fd = open (dwfl->user_core->executable_for_core, O_RDONLY | O_BINARY);
Elf *elf;
Dwfl_Error error = DWFL_E_ERRNO;
if (fd != -1)
diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
index 5f132b46..139a4774 100644
--- a/libdwfl/linux-kernel-modules.c
+++ b/libdwfl/linux-kernel-modules.c
@@ -97,7 +97,7 @@ try_kernel_name (Dwfl *dwfl, char **fname, bool try_debug)
int fd = ((((dwfl->callbacks->debuginfo_path
? *dwfl->callbacks->debuginfo_path : NULL)
?: DEFAULT_DEBUGINFO_PATH)[0] == ':') ? -1
- : TEMP_FAILURE_RETRY (open (*fname, O_RDONLY)));
+ : TEMP_FAILURE_RETRY (open (*fname, O_RDONLY | O_BINARY)));
if (fd < 0)
{
@@ -132,7 +132,7 @@ try_kernel_name (Dwfl *dwfl, char **fname, bool try_debug)
char *zname;
if (asprintf (&zname, "%s%s", *fname, vmlinux_suffixes[i]) > 0)
{
- fd = TEMP_FAILURE_RETRY (open (zname, O_RDONLY));
+ fd = TEMP_FAILURE_RETRY (open (zname, O_RDONLY | O_BINARY));
if (fd < 0)
free (zname);
else
@@ -488,7 +488,7 @@ intuit_kernel_bounds (Dwarf_Addr *start, Dwarf_Addr *end, Dwarf_Addr *notes)
{
struct read_address_state state = { NULL, NULL, 0, 0, NULL, NULL };
- state.f = fopen (KSYMSFILE, "r");
+ state.f = fopen (KSYMSFILE, "rb");
if (state.f == NULL)
return errno;
@@ -531,7 +531,7 @@ static int
check_notes (Dwfl_Module *mod, const char *notesfile,
Dwarf_Addr vaddr, const char *secname)
{
- int fd = open (notesfile, O_RDONLY);
+ int fd = open (notesfile, O_RDONLY | O_BINARY);
if (fd < 0)
return 1;
@@ -789,7 +789,7 @@ dwfl_linux_kernel_find_elf (Dwfl_Module *mod,
&& (!memcmp (f->fts_name, module_name, namelen)
|| !memcmp (f->fts_name, alternate_name, namelen)))
{
- int fd = open (f->fts_accpath, O_RDONLY);
+ int fd = open (f->fts_accpath, O_RDONLY | O_BINARY);
*file_name = strdup (f->fts_path);
fts_close (fts);
free (modulesdir[0]);
@@ -842,7 +842,7 @@ dwfl_linux_kernel_module_section_address
if (asprintf (&sysfile, SECADDRDIRFMT "%s", modname, secname) < 0)
return DWARF_CB_ABORT;
- FILE *f = fopen (sysfile, "r");
+ FILE *f = fopen (sysfile, "rb");
free (sysfile);
if (f == NULL)
@@ -876,7 +876,7 @@ dwfl_linux_kernel_module_section_address
if (asprintf (&sysfile, SECADDRDIRFMT "_%s",
modname, &secname[1]) < 0)
return ENOMEM;
- f = fopen (sysfile, "r");
+ f = fopen (sysfile, "rb");
free (sysfile);
if (f != NULL)
goto ok;
@@ -896,11 +896,11 @@ dwfl_linux_kernel_module_section_address
do
{
*--end = '\0';
- f = fopen (sysfile, "r");
+ f = fopen (sysfile, "rb");
if (is_init && f == NULL && errno == ENOENT)
{
sysfile[len - namelen] = '_';
- f = fopen (sysfile, "r");
+ f = fopen (sysfile, "rb");
sysfile[len - namelen] = '.';
}
}
@@ -934,7 +934,7 @@ INTDEF (dwfl_linux_kernel_module_section_address)
int
dwfl_linux_kernel_report_modules (Dwfl *dwfl)
{
- FILE *f = fopen (MODULELIST, "r");
+ FILE *f = fopen (MODULELIST, "rb");
if (f == NULL)
return errno;
diff --git a/libdwfl/linux-pid-attach.c b/libdwfl/linux-pid-attach.c
index e6a5c419..1def7f16 100644
--- a/libdwfl/linux-pid-attach.c
+++ b/libdwfl/linux-pid-attach.c
@@ -52,7 +52,7 @@ linux_proc_pid_is_stopped (pid_t pid)
bool retval, have_state;
snprintf (buffer, sizeof (buffer), "/proc/%ld/status", (long) pid);
- procfile = fopen (buffer, "r");
+ procfile = fopen (buffer, "rb");
if (procfile == NULL)
return false;
@@ -302,7 +302,7 @@ dwfl_linux_proc_attach (Dwfl *dwfl, pid_t pid, bool assume_ptrace_stopped)
/* Make sure to report the actual PID (thread group leader) to
dwfl_attach_state. */
snprintf (buffer, sizeof (buffer), "/proc/%ld/status", (long) pid);
- procfile = fopen (buffer, "r");
+ procfile = fopen (buffer, "rb");
if (procfile == NULL)
{
err = errno;
@@ -352,7 +352,7 @@ dwfl_linux_proc_attach (Dwfl *dwfl, pid_t pid, bool assume_ptrace_stopped)
Elf *elf;
i = snprintf (name, sizeof (name), "/proc/%ld/exe", (long) pid);
assert (i > 0 && i < (ssize_t) sizeof (name) - 1);
- int elf_fd = open (name, O_RDONLY);
+ int elf_fd = open (name, O_RDONLY | O_BINARY);
if (elf_fd >= 0)
{
elf = elf_begin (elf_fd, ELF_C_READ_MMAP, NULL);
diff --git a/libdwfl/linux-proc-maps.c b/libdwfl/linux-proc-maps.c
index c4438c0f..78f472a8 100644
--- a/libdwfl/linux-proc-maps.c
+++ b/libdwfl/linux-proc-maps.c
@@ -63,7 +63,7 @@ get_pid_class (pid_t pid)
if (asprintf (&fname, PROCEXEFMT, pid) < 0)
return ELFCLASSNONE;
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
free (fname);
if (fd < 0)
return ELFCLASSNONE;
@@ -99,7 +99,7 @@ grovel_auxv (pid_t pid, Dwfl *dwfl, GElf_Addr *sysinfo_ehdr)
if (asprintf (&fname, PROCAUXVFMT, pid) < 0)
return ENOMEM;
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
free (fname);
if (fd < 0)
return errno == ENOENT ? 0 : errno;
@@ -306,7 +306,7 @@ dwfl_linux_proc_report (Dwfl *dwfl, pid_t pid)
if (asprintf (&fname, PROCMAPSFMT, pid) < 0)
return ENOMEM;
- FILE *f = fopen (fname, "r");
+ FILE *f = fopen (fname, "rb");
free (fname);
if (f == NULL)
return errno;
@@ -380,7 +380,7 @@ dwfl_linux_proc_find_elf (Dwfl_Module *mod __attribute__ ((unused)),
if (pid == -1)
{
- int fd = open (module_name, O_RDONLY);
+ int fd = open (module_name, O_RDONLY | O_BINARY);
if (fd >= 0)
{
*file_name = strdup (module_name);
@@ -417,7 +417,7 @@ dwfl_linux_proc_find_elf (Dwfl_Module *mod __attribute__ ((unused)),
if (asprintf (&fname, PROCMEMFMT, pid) < 0)
goto detach;
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
free (fname);
if (fd < 0)
goto detach;
diff --git a/libdwfl/offline.c b/libdwfl/offline.c
index 80c80a16..7666358f 100644
--- a/libdwfl/offline.c
+++ b/libdwfl/offline.c
@@ -302,7 +302,7 @@ dwfl_report_offline (Dwfl *dwfl, const char *name,
if (fd < 0)
{
closefd = true;
- fd = open (file_name, O_RDONLY);
+ fd = open (file_name, O_RDONLY | O_BINARY);
if (fd < 0)
{
__libdwfl_seterrno (DWFL_E_ERRNO);
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index fd20ebb7..0f17347b 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,5 +1,9 @@
2017-05-04 Ulf Hermann <[email protected]>
+ * nlist.c: Open files in O_BINARY.
+
+2017-05-04 Ulf Hermann <[email protected]>
+
* elf_update.c: Don't try to posix_fallocate on systems where it isn't
available. Don't fchmod the output file if there is no fchmod.
diff --git a/libelf/nlist.c b/libelf/nlist.c
index c7b32fdb..f8488c14 100644
--- a/libelf/nlist.c
+++ b/libelf/nlist.c
@@ -71,7 +71,7 @@ nlist (const char *filename, struct nlist *nl)
size_t cnt;
/* Open the file. */
- fd = open (filename, O_RDONLY);
+ fd = open (filename, O_RDONLY | O_BINARY);
if (fd == -1)
{
__libelf_seterrno (ELF_E_NOFILE);
diff --git a/src/ChangeLog b/src/ChangeLog
index e0df2e13..7103770c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,22 @@
2017-05-04 Ulf Hermann <[email protected]>
+ * ar.c: Open files in O_BINARY.
+ * elfcmp.c: Likewise.
+ * elfcompress.c: Likewise.
+ * elflint.c: Likewise.
+ * findtextrel.c: Likewise.
+ * nm.c: Likewise.
+ * objdump.c: Likewise.
+ * ranlib.c: Likewise.
+ * readelf.c: Likewise.
+ * size.c: Likewise.
+ * stack.c: Likewise.
+ * strings.c: Likewise.
+ * strip.c: Likewise.
+ * unstrip.c: Likewise.
+
+2017-05-04 Ulf Hermann <[email protected]>
+
* ar.c: Don't fchmod or fchown the output file if fchmod or fchown
don't exist.
* elfcompress.c: Likewise.
diff --git a/src/ar.c b/src/ar.c
index 45b219ac..91391b19 100644
--- a/src/ar.c
+++ b/src/ar.c
@@ -393,14 +393,14 @@ open_archive (const char *arfname, int flags, int mode, Elf **elf,
if (elf != NULL)
{
- Elf_Cmd cmd = flags == O_RDONLY ? ELF_C_READ_MMAP : ELF_C_RDWR_MMAP;
+ Elf_Cmd cmd = flags == (O_RDONLY | O_BINARY) ? ELF_C_READ_MMAP : ELF_C_RDWR_MMAP;
*elf = elf_begin (fd, cmd, NULL);
if (*elf == NULL)
error (EXIT_FAILURE, 0, gettext ("cannot open archive '%s': %s"),
arfname, elf_errmsg (-1));
- if (flags == O_RDONLY && elf_kind (*elf) != ELF_K_AR)
+ if (flags == (O_RDONLY | O_BINARY) && elf_kind (*elf) != ELF_K_AR)
error (EXIT_FAILURE, 0, gettext ("%s: not an archive file"), arfname);
}
@@ -467,7 +467,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
int status = 0;
Elf *elf;
- int fd = open_archive (arfname, O_RDONLY, 0, &elf, NULL, false);
+ int fd = open_archive (arfname, O_RDONLY | O_BINARY, 0, &elf, NULL, false);
if (hcreate (2 * argc) == 0)
error (EXIT_FAILURE, errno, gettext ("cannot create hash table"));
@@ -600,7 +600,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
{
/* We cannot create a temporary file. Try to overwrite
the file or create it if it does not exist. */
- int flags = O_WRONLY | O_CREAT;
+ int flags = O_WRONLY | O_BINARY | O_CREAT;
if (dont_replace_existing)
flags |= O_EXCL;
else
@@ -919,7 +919,7 @@ do_oper_delete (const char *arfname, char **argv, int argc,
int status = 0;
Elf *elf;
struct stat st;
- int fd = open_archive (arfname, O_RDONLY, 0, &elf, &st, false);
+ int fd = open_archive (arfname, O_RDONLY | O_BINARY, 0, &elf, &st, false);
if (hcreate (2 * argc) == 0)
error (EXIT_FAILURE, errno, gettext ("cannot create hash table"));
@@ -1099,7 +1099,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
int status = 0;
Elf *elf;
struct stat st;
- int fd = open_archive (arfname, O_RDONLY, 0, &elf, &st, oper != oper_move);
+ int fd = open_archive (arfname, O_RDONLY | O_BINARY, 0, &elf, &st, oper != oper_move);
/* List of the files we keep. */
struct armem *all = NULL;
@@ -1255,7 +1255,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
struct stat newst;
Elf *newelf;
- int newfd = open (argv[cnt], O_RDONLY);
+ int newfd = open (argv[cnt], O_RDONLY | O_BINARY);
if (newfd == -1)
{
error (0, errno, gettext ("cannot open %s"), argv[cnt]);
@@ -1399,7 +1399,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
newfd = mkstemp (tmpfname);
else
{
- newfd = open (arfname, O_RDWR | O_CREAT | O_EXCL, DEFFILEMODE);
+ newfd = open (arfname, O_RDWR | O_BINARY | O_CREAT | O_EXCL, DEFFILEMODE);
if (newfd == -1 && errno == EEXIST)
/* Bah, first the file did not exist, now it does. Restart. */
return do_oper_insert (oper, arfname, argv, argc, member);
diff --git a/src/elfcmp.c b/src/elfcmp.c
index 50464207..7ca7efa3 100644
--- a/src/elfcmp.c
+++ b/src/elfcmp.c
@@ -714,7 +714,7 @@ parse_opt (int key, char *arg,
static Elf *
open_file (const char *fname, int *fdp, Ebl **eblp)
{
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
if (unlikely (fd == -1))
error (2, errno, gettext ("cannot open '%s'"), fname);
Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
diff --git a/src/elfcompress.c b/src/elfcompress.c
index e092e136..5dbeb576 100644
--- a/src/elfcompress.c
+++ b/src/elfcompress.c
@@ -321,7 +321,7 @@ process_file (const char *fname)
return res;
}
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd < 0)
{
error (0, errno, "Couldn't open %s\n", fname);
@@ -542,7 +542,7 @@ process_file (const char *fname)
else
{
fnew = xstrdup (foutput);
- fdnew = open (fnew, O_WRONLY | O_CREAT, st.st_mode & ALLPERMS);
+ fdnew = open (fnew, O_WRONLY | O_BINARY | O_CREAT, st.st_mode & ALLPERMS);
}
if (fdnew < 0)
diff --git a/src/elflint.c b/src/elflint.c
index 51e53c23..18b5a4be 100644
--- a/src/elflint.c
+++ b/src/elflint.c
@@ -149,7 +149,7 @@ main (int argc, char *argv[])
do
{
/* Open the file. */
- int fd = open (argv[remaining], O_RDONLY);
+ int fd = open (argv[remaining], O_RDONLY | O_BINARY);
if (fd == -1)
{
error (0, errno, gettext ("cannot open input file"));
diff --git a/src/findtextrel.c b/src/findtextrel.c
index 8f1e239a..642c0237 100644
--- a/src/findtextrel.c
+++ b/src/findtextrel.c
@@ -200,7 +200,7 @@ process_file (const char *fname, bool more_than_one)
real_fname = new_fname;
}
- int fd = open (real_fname, O_RDONLY);
+ int fd = open (real_fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
error (0, errno, gettext ("cannot open '%s'"), fname);
@@ -373,7 +373,7 @@ cannot get program header index at offset %zd: %s"),
fname, fname_len),
".debug");
- fd2 = open (difname, O_RDONLY);
+ fd2 = open (difname, O_RDONLY | O_BINARY);
if (fd2 != -1
&& (elf2 = elf_begin (fd2, ELF_C_READ_MMAP, NULL)) != NULL)
dw = dwarf_begin_elf (elf2, DWARF_C_READ, NULL);
diff --git a/src/nm.c b/src/nm.c
index 969c6d35..6ab22b25 100644
--- a/src/nm.c
+++ b/src/nm.c
@@ -359,7 +359,7 @@ static int
process_file (const char *fname, bool more_than_one)
{
/* Open the file. */
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
error (0, errno, gettext ("cannot open '%s'"), fname);
diff --git a/src/objdump.c b/src/objdump.c
index 860cfac6..13d3e0b8 100644
--- a/src/objdump.c
+++ b/src/objdump.c
@@ -236,7 +236,7 @@ static int
process_file (const char *fname, bool more_than_one)
{
/* Open the file. */
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
error (0, errno, gettext ("cannot open %s"), fname);
diff --git a/src/ranlib.c b/src/ranlib.c
index ecaeb55a..41057de2 100644
--- a/src/ranlib.c
+++ b/src/ranlib.c
@@ -136,7 +136,7 @@ copy_content (Elf *elf, int newfd, off_t off, size_t n)
static int
handle_file (const char *fname)
{
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
error (0, errno, gettext ("cannot open '%s'"), fname);
diff --git a/src/readelf.c b/src/readelf.c
index 40d49139..6811aced 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -297,7 +297,7 @@ main (int argc, char *argv[])
do
{
/* Open the file. */
- int fd = open (argv[remaining], O_RDONLY);
+ int fd = open (argv[remaining], O_RDONLY | O_BINARY);
if (fd == -1)
{
error (0, errno, gettext ("cannot open input file"));
diff --git a/src/size.c b/src/size.c
index ad8dbcbb..47748004 100644
--- a/src/size.c
+++ b/src/size.c
@@ -267,7 +267,7 @@ parse_opt (int key, char *arg,
static int
process_file (const char *fname)
{
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
if (unlikely (fd == -1))
{
error (0, errno, gettext ("cannot open '%s'"), fname);
diff --git a/src/stack.c b/src/stack.c
index 6f2ff69f..1f5a1c60 100644
--- a/src/stack.c
+++ b/src/stack.c
@@ -483,7 +483,7 @@ parse_opt (int key, char *arg __attribute__ ((unused)),
break;
case OPT_COREFILE:
- core_fd = open (arg, O_RDONLY);
+ core_fd = open (arg, O_RDONLY | O_BINARY);
if (core_fd < 0)
error (EXIT_BAD, errno, N_("Cannot open core file '%s'"), arg);
elf_version (EV_CURRENT);
diff --git a/src/strings.c b/src/strings.c
index 46b23560..8e2d098c 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -180,7 +180,7 @@ main (int argc, char *argv[])
do
{
int fd = (strcmp (argv[remaining], "-") == 0
- ? STDIN_FILENO : open (argv[remaining], O_RDONLY));
+ ? STDIN_FILENO : open (argv[remaining], O_RDONLY | O_BINARY));
if (unlikely (fd == -1))
{
error (0, errno, gettext ("cannot open '%s'"), argv[remaining]);
diff --git a/src/strip.c b/src/strip.c
index f5920812..db8ff2f5 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -315,7 +315,7 @@ process_file (const char *fname)
}
/* Open the file. */
- int fd = open (fname, output_fname == NULL ? O_RDWR : O_RDONLY);
+ int fd = open (fname, output_fname == NULL ? (O_RDWR | O_BINARY) : (O_RDONLY | O_BINARY));
if (fd == -1)
{
error (0, errno, gettext ("while opening '%s'"), fname);
@@ -447,7 +447,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
/* If we are not replacing the input file open a new file here. */
if (output_fname != NULL)
{
- fd = open (output_fname, O_RDWR | O_CREAT, mode);
+ fd = open (output_fname, O_RDWR | O_BINARY | O_CREAT, mode);
if (unlikely (fd == -1))
{
error (0, errno, gettext ("cannot open '%s'"), output_fname);
diff --git a/src/unstrip.c b/src/unstrip.c
index 50749093..8d5414fa 100644
--- a/src/unstrip.c
+++ b/src/unstrip.c
@@ -2017,7 +2017,7 @@ DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"),
make_directories (output_file);
/* Copy the unstripped file and then modify it. */
- int outfd = open (output_file, O_RDWR | O_CREAT,
+ int outfd = open (output_file, O_RDWR | O_BINARY | O_CREAT,
stripped_ehdr->e_type == ET_REL ? 0666 : 0777);
if (outfd < 0)
error (EXIT_FAILURE, errno, _("cannot open '%s'"), output_file);
@@ -2047,7 +2047,7 @@ DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"),
static int
open_file (const char *file, bool writable)
{
- int fd = open (file, writable ? O_RDWR : O_RDONLY);
+ int fd = open (file, writable ? (O_RDWR | O_BINARY) : (O_RDONLY | O_BINARY));
if (fd < 0)
error (EXIT_FAILURE, errno, _("cannot open '%s'"), file);
return fd;
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 611b88a7..b091ae07 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,5 +1,62 @@
2017-05-04 Ulf Hermann <[email protected]>
+ * alldts.c: Open files in O_BINARY.
+ * allfcts.c: Likewise.
+ * arextract.c: Likewise.
+ * arls.c: Likewise.
+ * arsymtest.c: Likewise.
+ * asm-tst1.c: Likewise.
+ * asm-tst2.c: Likewise.
+ * asm-tst3.c: Likewise.
+ * asm-tst7.c: Likewise.
+ * asm-tst8.c: Likewise.
+ * asm-tst9.c: Likewise.
+ * backtrace-data.c: Likewise.
+ * buildid.c: Likewise.
+ * debugaltlink.c: Likewise.
+ * debuglink.c: Likewise.
+ * dwarf-getmacros.c: Likewise.
+ * dwarf-getstring.c: Likewise.
+ * dwarf-ranges.c: Likewise.
+ * dwelfgnucompressed.c: Likewise.
+ * early-offscn.c: Likewise.
+ * ecp.c: Likewise.
+ * elfgetchdr.c: Likewise.
+ * elfgetzdata.c: Likewise.
+ * elfputzdata.c: Likewise.
+ * elfshphehdr.c: Likewise.
+ * elfstrmerge.c: Likewise.
+ * elfstrtab.c: Likewise.
+ * emptyfile.c: Likewise.
+ * fillfile.c: Likewise.
+ * get-aranges.c: Likewise.
+ * get-files.c: Likewise.
+ * get-lines.c: Likewise.
+ * get-pubnames.c: Likewise.
+ * getsrc_die.c: Likewise.
+ * newdata.c: Likewise.
+ * rdwrmmap.c: Likewise.
+ * rerequest_tag.c: Likewise.
+ * saridx.c: Likewise.
+ * scnnames.c: Likewise.
+ * sectiondump.c: Likewise.
+ * show-abbrev.c: Likewise.
+ * show-die-info.c: Likewise.
+ * showptable.c: Likewise.
+ * strptr.c: Likewise.
+ * test-elf_cntl_gelf_getshdr.c: Likewise.
+ * test-flag-nobits.c: Likewise.
+ * typeiter.c: Likewise.
+ * typeiter2.c: Likewise.
+ * update1.c: Likewise.
+ * update2.c: Likewise.
+ * update3.c: Likewise.
+ * update4.c: Likewise.
+ * vendorelf.c: Likewise.
+ * zstrptr.c: Likewise.
+
+2017-05-04 Ulf Hermann <[email protected]>
+
* deleted.c: If fork() is unavailable, skip the test.
2017-05-04 Ulf Hermann <[email protected]>
diff --git a/tests/alldts.c b/tests/alldts.c
index 28b3063c..abddf084 100644
--- a/tests/alldts.c
+++ b/tests/alldts.c
@@ -68,7 +68,7 @@ main (void)
(void) __fsetlocking (stdout, FSETLOCKING_BYCALLER);
/* Open the file. */
- int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open (fname, O_RDWR | O_BINARY | O_CREAT | O_TRUNC, 0666);
if (fd == -1)
{
printf ("cannot open `%s': %m\n", fname);
diff --git a/tests/allfcts.c b/tests/allfcts.c
index 84ac53df..30609efb 100644
--- a/tests/allfcts.c
+++ b/tests/allfcts.c
@@ -53,7 +53,7 @@ setup_alt (Dwarf *main)
fprintf (stderr, "allfcts: dwelf_dwarf_gnu_debugaltlink: %s\n", dwarf_errmsg (-1));
exit(1);
}
- int fd = open (alt_name, O_RDONLY);
+ int fd = open (alt_name, O_RDONLY | O_BINARY);
if (fd < 0) {
fprintf (stderr, "allfcts: open (%s): %s\n", alt_name, strerror(errno));
exit(1);
@@ -77,7 +77,7 @@ main (int argc, char *argv[])
{
for (int i = 1; i < argc; ++i)
{
- int fd = open (argv[i], O_RDONLY);
+ int fd = open (argv[i], O_RDONLY | O_BINARY);
if (fd < 0) {
fprintf (stderr, "open (%s): %s\n", argv[i], strerror(errno));
exit(1);
diff --git a/tests/arextract.c b/tests/arextract.c
index 2c4dc758..f3623b9e 100644
--- a/tests/arextract.c
+++ b/tests/arextract.c
@@ -42,7 +42,7 @@ main (int argc, char *argv[])
exit (1);
/* Open the archive. */
- fd = open (argv[1], O_RDONLY);
+ fd = open (argv[1], O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("Cannot open input file: %m");
@@ -95,7 +95,7 @@ Failed to get base address for the archive element: %s\n",
}
/* Open the output file. */
- outfd = open (argv[3], O_CREAT | O_TRUNC | O_RDWR, 0666);
+ outfd = open (argv[3], O_CREAT | O_TRUNC | O_RDWR | O_BINARY, 0666);
if (outfd == -1)
{
printf ("cannot open output file: %m");
diff --git a/tests/arls.c b/tests/arls.c
index ca0d3e6e..244b0fb6 100644
--- a/tests/arls.c
+++ b/tests/arls.c
@@ -47,7 +47,7 @@ main (int argc, char *argv[])
static int
handle (const char *fname)
{
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open '%s': %m\n", fname);
diff --git a/tests/arsymtest.c b/tests/arsymtest.c
index c724863f..ca216eb1 100644
--- a/tests/arsymtest.c
+++ b/tests/arsymtest.c
@@ -37,7 +37,7 @@ main (int argc, char *argv[])
exit (1);
/* Open the archive. */
- fd = open (argv[1], O_RDONLY);
+ fd = open (argv[1], O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("Cannot open input file: %m");
@@ -45,7 +45,7 @@ main (int argc, char *argv[])
}
/* Open the output file. */
- fp = fopen (argv[2], "w");
+ fp = fopen (argv[2], "wb");
if (fp == NULL)
{
printf ("Cannot open output file: %m");
diff --git a/tests/asm-tst1.c b/tests/asm-tst1.c
index 9afc676b..085ec3e0 100644
--- a/tests/asm-tst1.c
+++ b/tests/asm-tst1.c
@@ -114,7 +114,7 @@ main (void)
}
/* Check the file. */
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open generated file: %m\n");
diff --git a/tests/asm-tst2.c b/tests/asm-tst2.c
index 2556d0c4..f7b36786 100644
--- a/tests/asm-tst2.c
+++ b/tests/asm-tst2.c
@@ -130,7 +130,7 @@ main (void)
}
/* Check the file. */
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open generated file: %m\n");
diff --git a/tests/asm-tst3.c b/tests/asm-tst3.c
index e52cfbe1..a8f145d4 100644
--- a/tests/asm-tst3.c
+++ b/tests/asm-tst3.c
@@ -137,7 +137,7 @@ main (void)
}
/* Check the file. */
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open generated file: %m\n");
diff --git a/tests/asm-tst7.c b/tests/asm-tst7.c
index 00cb2bfe..aca91c7c 100644
--- a/tests/asm-tst7.c
+++ b/tests/asm-tst7.c
@@ -71,7 +71,7 @@ main (void)
}
/* Check the file. */
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open generated file: %m\n");
diff --git a/tests/asm-tst8.c b/tests/asm-tst8.c
index 4fb0d998..d1c64d24 100644
--- a/tests/asm-tst8.c
+++ b/tests/asm-tst8.c
@@ -72,7 +72,7 @@ main (void)
}
/* Check the file. */
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open generated file: %m\n");
diff --git a/tests/asm-tst9.c b/tests/asm-tst9.c
index b6d0e431..368c0751 100644
--- a/tests/asm-tst9.c
+++ b/tests/asm-tst9.c
@@ -164,7 +164,7 @@ main (void)
}
/* Check the file. */
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open generated file: %m\n");
diff --git a/tests/backtrace-data.c b/tests/backtrace-data.c
index a387d8ff..6db98789 100644
--- a/tests/backtrace-data.c
+++ b/tests/backtrace-data.c
@@ -98,7 +98,7 @@ maps_lookup (pid_t pid, Dwarf_Addr addr, GElf_Addr *basep)
int i = asprintf (&fname, "/proc/%ld/maps", (long) pid);
assert (errno == 0);
assert (i > 0);
- FILE *f = fopen (fname, "r");
+ FILE *f = fopen (fname, "rb");
assert (errno == 0);
assert (f);
free (fname);
diff --git a/tests/buildid.c b/tests/buildid.c
index 2d334020..1049860c 100644
--- a/tests/buildid.c
+++ b/tests/buildid.c
@@ -41,7 +41,7 @@ main (int argc, char *argv[])
for (int i = 1; i < argc; i++)
{
const char *file = argv[i];
- int fd = open (file, O_RDONLY);
+ int fd = open (file, O_RDONLY | O_BINARY);
if (fd < 0)
error (EXIT_FAILURE, errno, "couldn't open file '%s'", file);
diff --git a/tests/debugaltlink.c b/tests/debugaltlink.c
index b470e316..4618b615 100644
--- a/tests/debugaltlink.c
+++ b/tests/debugaltlink.c
@@ -41,7 +41,7 @@ main (int argc, char *argv[])
for (int i = 1; i < argc; i++)
{
const char *file = argv[i];
- int fd = open (file, O_RDONLY);
+ int fd = open (file, O_RDONLY | O_BINARY);
if (fd < 0)
error (EXIT_FAILURE, errno, "couldn't open file '%s'", file);
diff --git a/tests/debuglink.c b/tests/debuglink.c
index 935d1029..ea5bd238 100644
--- a/tests/debuglink.c
+++ b/tests/debuglink.c
@@ -40,7 +40,7 @@ main (int argc, char *argv[])
for (int i = 1; i < argc; i++)
{
const char *file = argv[i];
- int fd = open (file, O_RDONLY);
+ int fd = open (file, O_RDONLY | O_BINARY);
if (fd < 0)
error (EXIT_FAILURE, errno, "couldn't open file '%s'", file);
diff --git a/tests/dwarf-getmacros.c b/tests/dwarf-getmacros.c
index 92e093ca..d5d1e2c8 100644
--- a/tests/dwarf-getmacros.c
+++ b/tests/dwarf-getmacros.c
@@ -125,7 +125,7 @@ main (int argc, char *argv[])
ptrdiff_t cuoff = strtol (argv[2], NULL, 0);
bool new_style = argc > 3;
- int fd = open (name, O_RDONLY);
+ int fd = open (name, O_RDONLY | O_BINARY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
Dwarf_Die cudie_mem, *cudie = dwarf_offdie (dbg, cuoff, &cudie_mem);
diff --git a/tests/dwarf-getstring.c b/tests/dwarf-getstring.c
index ffa3e375..a735a804 100644
--- a/tests/dwarf-getstring.c
+++ b/tests/dwarf-getstring.c
@@ -37,7 +37,7 @@ main (int argc, char *argv[])
Dwarf_Off offset = 0;
size_t len;
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open '%s': %m\n", argv[cnt]);
diff --git a/tests/dwarf-ranges.c b/tests/dwarf-ranges.c
index 4bcf96ce..0eec90c3 100644
--- a/tests/dwarf-ranges.c
+++ b/tests/dwarf-ranges.c
@@ -34,7 +34,7 @@ main (int argc, char *argv[])
const char *name = argv[1];
ptrdiff_t cuoff = strtol (argv[2], NULL, 0);
- int fd = open (name, O_RDONLY);
+ int fd = open (name, O_RDONLY | O_BINARY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
Dwarf_Die cudie_mem, *cudie = dwarf_offdie (dbg, cuoff, &cudie_mem);
diff --git a/tests/dwelfgnucompressed.c b/tests/dwelfgnucompressed.c
index 0132271c..e8427427 100644
--- a/tests/dwelfgnucompressed.c
+++ b/tests/dwelfgnucompressed.c
@@ -42,7 +42,7 @@ main (int argc, char *argv[])
for (cnt = 1; cnt < argc; ++cnt)
{
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
Elf *elf = elf_begin (fd, ELF_C_READ, NULL);
if (elf == NULL)
diff --git a/tests/early-offscn.c b/tests/early-offscn.c
index 924cb9ef..d47abc88 100644
--- a/tests/early-offscn.c
+++ b/tests/early-offscn.c
@@ -35,7 +35,7 @@ main (int argc, char *argv[])
elf_version (EV_CURRENT);
/* Open the archive. */
- int fd = open (argv[1], O_RDONLY);
+ int fd = open (argv[1], O_RDONLY | O_BINARY);
if (fd < 0)
error (1, errno, "cannot open '%s'", argv[1]);
diff --git a/tests/ecp.c b/tests/ecp.c
index 38a6859e..0882c54e 100644
--- a/tests/ecp.c
+++ b/tests/ecp.c
@@ -34,7 +34,7 @@ main (int argc, char *argv[])
elf_version (EV_CURRENT);
- int infd = open (argv[1], O_RDONLY);
+ int infd = open (argv[1], O_RDONLY | O_BINARY);
if (infd == -1)
error (EXIT_FAILURE, errno, "cannot open input file '%s'", argv[1]);
@@ -46,6 +46,9 @@ main (int argc, char *argv[])
int outfd = creat (argv[2], 0666);
if (outfd == -1)
error (EXIT_FAILURE, errno, "cannot open output file '%s'", argv[2]);
+#if (defined _WIN32 || defined __WIN32__)
+ _setmode (outfd, O_BINARY);
+#endif
Elf *outelf = elf_begin (outfd, ELF_C_WRITE, NULL);
if (outelf == NULL)
diff --git a/tests/elfgetchdr.c b/tests/elfgetchdr.c
index 44ba1789..f23b3af3 100644
--- a/tests/elfgetchdr.c
+++ b/tests/elfgetchdr.c
@@ -42,7 +42,7 @@ main (int argc, char *argv[])
for (cnt = 1; cnt < argc; ++cnt)
{
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
Elf *elf = elf_begin (fd, ELF_C_READ, NULL);
if (elf == NULL)
diff --git a/tests/elfgetzdata.c b/tests/elfgetzdata.c
index 82afbe52..562adafb 100644
--- a/tests/elfgetzdata.c
+++ b/tests/elfgetzdata.c
@@ -50,7 +50,7 @@ main (int argc, char *argv[])
for (cnt = 2; cnt < argc; ++cnt)
{
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
Elf *elf = elf_begin (fd, mmap ? ELF_C_READ_MMAP : ELF_C_READ, NULL);
if (elf == NULL)
diff --git a/tests/elfputzdata.c b/tests/elfputzdata.c
index 66ab77ba..12b05712 100644
--- a/tests/elfputzdata.c
+++ b/tests/elfputzdata.c
@@ -55,7 +55,7 @@ main (int argc, char *argv[])
for (cnt = 2; cnt < argc; ++cnt)
{
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
Elf *elf = elf_begin (fd, ELF_C_READ, NULL);
if (elf == NULL)
diff --git a/tests/elfshphehdr.c b/tests/elfshphehdr.c
index 5a297e0d..d1ab633b 100644
--- a/tests/elfshphehdr.c
+++ b/tests/elfshphehdr.c
@@ -152,7 +152,7 @@ main (int argc __attribute__ ((unused)), char **argv __attribute ((unused)))
{
elf_version (EV_CURRENT);
- int fd = fd = open("/dev/zero", O_WRONLY);
+ int fd = fd = open("/dev/zero", O_WRONLY | O_BINARY);
check ("open", fd >= 0);
Elf *elf;
diff --git a/tests/elfstrmerge.c b/tests/elfstrmerge.c
index 17f40c7d..ff15f57d 100644
--- a/tests/elfstrmerge.c
+++ b/tests/elfstrmerge.c
@@ -164,7 +164,7 @@ main (int argc, char **argv)
fname = argv[1];
else
fname = argv[3];
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd < 0)
fail_errno ("couldn't open", fname);
@@ -367,7 +367,7 @@ main (int argc, char **argv)
else
{
fnew = argv[2];
- fdnew = open (fnew, O_WRONLY | O_CREAT, st.st_mode & ALLPERMS);
+ fdnew = open (fnew, O_WRONLY | O_CREAT | O_BINARY, st.st_mode & ALLPERMS);
}
if (fdnew < 0)
diff --git a/tests/elfstrtab.c b/tests/elfstrtab.c
index c27d6cfb..69ba46b4 100644
--- a/tests/elfstrtab.c
+++ b/tests/elfstrtab.c
@@ -134,7 +134,7 @@ check_elf (const char *fname, int class, int use_mmap)
printf ("\nfname: %s\n", fname);
stridx = 0;
- int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open (fname, O_RDWR | O_BINARY | O_CREAT | O_TRUNC, 0666);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
@@ -280,7 +280,7 @@ check_elf (const char *fname, int class, int use_mmap)
close (fd);
/* Read the ELF from disk now. */
- fd = open (fname, O_RDWR, 0666);
+ fd = open (fname, O_RDWR | O_BINARY, 0666);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
@@ -349,7 +349,7 @@ check_elf (const char *fname, int class, int use_mmap)
close (fd);
// And read it in one last time.
- fd = open (fname, O_RDONLY, 0666);
+ fd = open (fname, O_RDONLY | O_BINARY, 0666);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
diff --git a/tests/emptyfile.c b/tests/emptyfile.c
index 6d086246..ad024968 100644
--- a/tests/emptyfile.c
+++ b/tests/emptyfile.c
@@ -67,7 +67,7 @@ check_elf (const char *fname, int class, int use_mmap)
printf ("\nfname: %s\n", fname);
stridx = 0; // Reset strtab strings index
- int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open (fname, O_RDWR | O_BINARY | O_CREAT | O_TRUNC, 0666);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
@@ -125,7 +125,7 @@ check_elf (const char *fname, int class, int use_mmap)
close (fd);
/* Reread the ELF from disk now. */
- fd = open (fname, O_RDWR, 0666);
+ fd = open (fname, O_RDWR | O_BINARY, 0666);
if (fd == -1)
{
printf ("cannot (re)open `%s': %s\n", fname, strerror (errno));
@@ -208,7 +208,7 @@ check_elf (const char *fname, int class, int use_mmap)
close (fd);
// And read it in one last time.
- fd = open (fname, O_RDONLY, 0666);
+ fd = open (fname, O_RDONLY | O_BINARY, 0666);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
diff --git a/tests/fillfile.c b/tests/fillfile.c
index 915e249d..4529637b 100644
--- a/tests/fillfile.c
+++ b/tests/fillfile.c
@@ -201,7 +201,7 @@ check_elf (const char *fname, int class, int use_mmap)
printf ("\nfname: %s\n", fname);
stridx = 0; // Reset strtab strings index
- int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC | O_BINARY, 0666);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
@@ -266,7 +266,7 @@ check_elf (const char *fname, int class, int use_mmap)
/* Reread the ELF from disk now. */
printf ("Rereading %s\n", fname);
- fd = open (fname, O_RDWR, 0666);
+ fd = open (fname, O_RDWR | O_BINARY, 0666);
if (fd == -1)
{
printf ("cannot (re)open `%s': %s\n", fname, strerror (errno));
@@ -347,7 +347,7 @@ check_elf (const char *fname, int class, int use_mmap)
// And read it in one last time.
printf ("Rereading %s again\n", fname);
- fd = open (fname, O_RDONLY, 0666);
+ fd = open (fname, O_RDONLY | O_BINARY, 0666);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
diff --git a/tests/get-aranges.c b/tests/get-aranges.c
index 7f85cdad..e41fb12e 100644
--- a/tests/get-aranges.c
+++ b/tests/get-aranges.c
@@ -43,7 +43,7 @@ main (int argc, char *argv[])
for (cnt = 1; cnt < argc; ++cnt)
{
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
if (dbg == NULL)
diff --git a/tests/get-files.c b/tests/get-files.c
index 04091733..205c10b2 100644
--- a/tests/get-files.c
+++ b/tests/get-files.c
@@ -34,7 +34,7 @@ main (int argc, char *argv[])
for (cnt = 1; cnt < argc; ++cnt)
{
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
if (dbg == NULL)
diff --git a/tests/get-lines.c b/tests/get-lines.c
index c361a2c3..5934f8c0 100644
--- a/tests/get-lines.c
+++ b/tests/get-lines.c
@@ -35,7 +35,7 @@ main (int argc, char *argv[])
for (cnt = 1; cnt < argc; ++cnt)
{
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
if (dbg == NULL)
diff --git a/tests/get-pubnames.c b/tests/get-pubnames.c
index 4777f49d..63fe1934 100644
--- a/tests/get-pubnames.c
+++ b/tests/get-pubnames.c
@@ -71,7 +71,7 @@ main (int argc, char *argv[])
for (cnt = 1; cnt < argc; ++cnt)
{
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
if (dbg == NULL)
{
diff --git a/tests/getsrc_die.c b/tests/getsrc_die.c
index 055aede0..3c5060bf 100644
--- a/tests/getsrc_die.c
+++ b/tests/getsrc_die.c
@@ -33,7 +33,7 @@ int
main (int argc, char *argv[])
{
/* file addr+ */
- int fd = open (argv[1], O_RDONLY);
+ int fd = open (argv[1], O_RDONLY | O_BINARY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
if (dbg == NULL)
error (-1, 0, "dwarf_begin (%s): %s\n", argv[1], dwarf_errmsg (-1));
diff --git a/tests/newdata.c b/tests/newdata.c
index 9af99564..bb9f313e 100644
--- a/tests/newdata.c
+++ b/tests/newdata.c
@@ -243,7 +243,7 @@ check_elf (int class, int use_mmap)
printf ("\ncheck_elf: %s\n", fname);
- int fd = open (fname, O_RDWR|O_CREAT|O_TRUNC, 00666);
+ int fd = open (fname, O_RDWR | O_BINARY|O_CREAT|O_TRUNC, 00666);
if (fd == -1)
{
printf ("cannot create `%s': %s\n", fname, strerror (errno));
@@ -268,7 +268,7 @@ check_elf (int class, int use_mmap)
close (fd);
// Read the ELF from disk now. And add new data directly.
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
@@ -298,7 +298,7 @@ check_elf (int class, int use_mmap)
close (fd);
// Read the ELF from disk now. And add new data after raw reading.
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
@@ -350,7 +350,7 @@ check_elf (int class, int use_mmap)
close (fd);
// Read the ELF from disk now. And add new data after data reading.
- fd = open (fname, O_RDONLY);
+ fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
diff --git a/tests/rdwrmmap.c b/tests/rdwrmmap.c
index 6f027dfe..1a968ebf 100644
--- a/tests/rdwrmmap.c
+++ b/tests/rdwrmmap.c
@@ -28,7 +28,7 @@
int
main (int argc __attribute__ ((unused)), char *argv[])
{
- int fd = open (argv[1], O_RDWR);
+ int fd = open (argv[1], O_RDWR | O_BINARY);
if (fd < 0)
error (2, errno, "open: %s", argv[1]);
diff --git a/tests/rerequest_tag.c b/tests/rerequest_tag.c
index b4d46271..02f3902a 100644
--- a/tests/rerequest_tag.c
+++ b/tests/rerequest_tag.c
@@ -27,7 +27,7 @@ main (int argc, char **argv)
{
assert (argc > 1);
- int i = open (argv[1], O_RDONLY);
+ int i = open (argv[1], O_RDONLY | O_BINARY);
assert (i >= 0);
Dwarf *dw = dwarf_begin (i, DWARF_C_READ);
diff --git a/tests/saridx.c b/tests/saridx.c
index 8a450d82..37c0bbf2 100644
--- a/tests/saridx.c
+++ b/tests/saridx.c
@@ -106,7 +106,7 @@ main (int argc, char *argv[])
error (EXIT_FAILURE, 0, "No input file given");
/* Open the input file. */
- fd = open (argv[arg], O_RDONLY);
+ fd = open (argv[arg], O_RDONLY | O_BINARY);
if (fd == -1)
{
perror ("cannot open input file");
diff --git a/tests/scnnames.c b/tests/scnnames.c
index 7f268258..0c5922f6 100644
--- a/tests/scnnames.c
+++ b/tests/scnnames.c
@@ -39,7 +39,7 @@ main (int argc, char *argv[])
exit (1);
}
- fd = open (argv[1], O_RDONLY);
+ fd = open (argv[1], O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open \"%s\": %s\n", argv[1], strerror (errno));
diff --git a/tests/sectiondump.c b/tests/sectiondump.c
index 3033fedc..edec1a7a 100644
--- a/tests/sectiondump.c
+++ b/tests/sectiondump.c
@@ -45,7 +45,7 @@ main (int argc, char *argv[])
/* Open the test file. This is given as the first parameter to the
program. */
- fd = open (argv[1], O_RDONLY);
+ fd = open (argv[1], O_RDONLY | O_BINARY);
if (fd == -1)
error (EXIT_FAILURE, errno, "cannot open input file `%s'", argv[1]);
diff --git a/tests/show-abbrev.c b/tests/show-abbrev.c
index b0af0297..3a0c91d1 100644
--- a/tests/show-abbrev.c
+++ b/tests/show-abbrev.c
@@ -31,7 +31,7 @@ main (int argc, char *argv[])
for (cnt = 1; cnt < argc; ++cnt)
{
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
if (dbg == NULL)
{
diff --git a/tests/show-die-info.c b/tests/show-die-info.c
index 34e27a3b..1eb0bfb9 100644
--- a/tests/show-die-info.c
+++ b/tests/show-die-info.c
@@ -315,7 +315,7 @@ main (int argc, char *argv[])
for (cnt = 1; cnt < argc; ++cnt)
{
- int fd = open (argv[cnt], O_RDONLY);
+ int fd = open (argv[cnt], O_RDONLY | O_BINARY);
Dwarf *dbg;
printf ("file: %s\n", basename (argv[cnt]));
diff --git a/tests/showptable.c b/tests/showptable.c
index a794b0e8..5586c5f3 100644
--- a/tests/showptable.c
+++ b/tests/showptable.c
@@ -38,7 +38,7 @@ main (int argc, char *argv[])
exit (1);
}
- fd = open (argv[1], O_RDONLY);
+ fd = open (argv[1], O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open \"%s\": %s\n", argv[1], strerror (errno));
diff --git a/tests/strptr.c b/tests/strptr.c
index 759664aa..98f9c468 100644
--- a/tests/strptr.c
+++ b/tests/strptr.c
@@ -45,7 +45,7 @@ main (int argc, char *argv[])
elf_version (EV_CURRENT);
/* Read the ELF from disk now. */
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
diff --git a/tests/test-elf_cntl_gelf_getshdr.c b/tests/test-elf_cntl_gelf_getshdr.c
index 7371110c..2bc822c3 100644
--- a/tests/test-elf_cntl_gelf_getshdr.c
+++ b/tests/test-elf_cntl_gelf_getshdr.c
@@ -67,7 +67,7 @@ main (int argc, char *argv[])
elf_version (EV_CURRENT);
- int fd = open (argv[2], O_RDONLY);
+ int fd = open (argv[2], O_RDONLY | O_BINARY);
if (fd < 0)
{
fprintf (stderr, "Cannot open input file %s: %s\n", argv[2],
diff --git a/tests/test-flag-nobits.c b/tests/test-flag-nobits.c
index 15d44ea8..5472fe05 100644
--- a/tests/test-flag-nobits.c
+++ b/tests/test-flag-nobits.c
@@ -30,7 +30,7 @@ main (int argc, char **argv)
elf_version (EV_CURRENT);
- int fd = open (argv[1], O_RDONLY);
+ int fd = open (argv[1], O_RDONLY | O_BINARY);
Elf *stripped = elf_begin (fd, ELF_C_READ, NULL);
Elf_Scn *scn = NULL;
diff --git a/tests/typeiter.c b/tests/typeiter.c
index dff45260..a3ef823c 100644
--- a/tests/typeiter.c
+++ b/tests/typeiter.c
@@ -29,7 +29,7 @@ main (int argc, char *argv[])
{
for (int i = 1; i < argc; ++i)
{
- int fd = open (argv[i], O_RDONLY);
+ int fd = open (argv[i], O_RDONLY | O_BINARY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
if (dbg != NULL)
diff --git a/tests/typeiter2.c b/tests/typeiter2.c
index 35b6a12e..c1b19f75 100644
--- a/tests/typeiter2.c
+++ b/tests/typeiter2.c
@@ -30,7 +30,7 @@ main (int argc, char *argv[])
{
for (int i = 1; i < argc; ++i)
{
- int fd = open (argv[i], O_RDONLY);
+ int fd = open (argv[i], O_RDONLY | O_BINARY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
if (dbg != NULL)
diff --git a/tests/update1.c b/tests/update1.c
index f4c14753..a5716185 100644
--- a/tests/update1.c
+++ b/tests/update1.c
@@ -38,7 +38,7 @@ main (int argc, char *argv[] __attribute__ ((unused)))
Elf32_Ehdr *ehdr;
int i;
- fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ fd = open (fname, O_RDWR | O_BINARY | O_CREAT | O_TRUNC, 0666);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
diff --git a/tests/update2.c b/tests/update2.c
index 5805163d..3e228796 100644
--- a/tests/update2.c
+++ b/tests/update2.c
@@ -39,7 +39,7 @@ main (int argc, char *argv[] __attribute__ ((unused)))
Elf32_Phdr *phdr;
int i;
- fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ fd = open (fname, O_RDWR | O_BINARY | O_CREAT | O_TRUNC, 0666);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
diff --git a/tests/update3.c b/tests/update3.c
index 7a4224dd..d619bed0 100644
--- a/tests/update3.c
+++ b/tests/update3.c
@@ -46,7 +46,7 @@ main (int argc, char *argv[] __attribute__ ((unused)))
Dwelf_Strent *shstrtabse;
int i;
- fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ fd = open (fname, O_RDWR | O_BINARY | O_CREAT | O_TRUNC, 0666);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
diff --git a/tests/update4.c b/tests/update4.c
index a9bd4bf9..8196b8c8 100644
--- a/tests/update4.c
+++ b/tests/update4.c
@@ -50,7 +50,7 @@ main (int argc, char *argv[] __attribute__ ((unused)))
Dwelf_Strent *shstrtabse;
int i;
- fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ fd = open (fname, O_RDWR | O_BINARY | O_CREAT | O_TRUNC, 0666);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
diff --git a/tests/vendorelf.c b/tests/vendorelf.c
index bc13cce3..835e941f 100644
--- a/tests/vendorelf.c
+++ b/tests/vendorelf.c
@@ -36,7 +36,7 @@ check_elf (const char *fname, int class, int use_mmap)
{
printf ("\nfname: %s\n", fname);
- int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open (fname, O_RDWR | O_BINARY | O_CREAT | O_TRUNC, 0666);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
@@ -124,7 +124,7 @@ check_elf (const char *fname, int class, int use_mmap)
close (fd);
/* Reread the ELF from disk now. */
- fd = open (fname, O_RDONLY, 0666);
+ fd = open (fname, O_RDONLY | O_BINARY, 0666);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
diff --git a/tests/zstrptr.c b/tests/zstrptr.c
index 6d8e19f7..8560dfdb 100644
--- a/tests/zstrptr.c
+++ b/tests/zstrptr.c
@@ -45,7 +45,7 @@ main (int argc, char *argv[])
elf_version (EV_CURRENT);
/* Read the ELF from disk now. */
- int fd = open (fname, O_RDONLY);
+ int fd = open (fname, O_RDONLY | O_BINARY);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));