diff --git a/mld/link.c b/mld/link.c index 5696973..5a8e151 100644 --- a/mld/link.c +++ b/mld/link.c @@ -7,6 +7,7 @@ #include #include #include +#include #include "link.h" #include "mips.h" @@ -573,7 +574,13 @@ static int write_file(struct linker *linker) extern char *current_file; current_file = linker->args->out_file; - FILE *out = fopen(linker->args->out_file, "w"); + int fd = open(linker->args->out_file, O_RDWR | O_CREAT, 0711); + if (fd < 0) { + PERROR("cannot write"); + return M_ERROR; + } + + FILE *out = fdopen(fd, "w"); if (out == NULL) { PERROR("cannot write"); return M_ERROR;