mirror of
https://git.yoctoproject.org/poky
synced 2026-05-31 00:39:46 +00:00
acpica: fix compilation with musl
Manipulating stderr after freopen() fails as done by upstream does not work with musl. The replacement is Unix specific and uses open()/dup2(). (From OE-Core rev: d656298e1438c9c5a2979a1c76f5cdb804a267fb) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
7a309065c1
commit
76a4a4e8a4
@@ -19,6 +19,7 @@ DEPENDS = "bison flex"
|
|||||||
SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix2-${PV}.tar.gz \
|
SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix2-${PV}.tar.gz \
|
||||||
file://no-werror.patch \
|
file://no-werror.patch \
|
||||||
file://rename-yy_scan_string-manually.patch \
|
file://rename-yy_scan_string-manually.patch \
|
||||||
|
file://manipulate-fds-instead-of-FILE.patch \
|
||||||
"
|
"
|
||||||
SRC_URI[md5sum] = "2bc4a7ccc82de9df9fa964f784ecb29c"
|
SRC_URI[md5sum] = "2bc4a7ccc82de9df9fa964f784ecb29c"
|
||||||
SRC_URI[sha256sum] = "61204ec56d71bc9bfa2ee2ade4c66f7e8541772ac72ef8ccc20b3f339cc96374"
|
SRC_URI[sha256sum] = "61204ec56d71bc9bfa2ee2ade4c66f7e8541772ac72ef8ccc20b3f339cc96374"
|
||||||
|
|||||||
@@ -0,0 +1,71 @@
|
|||||||
|
From 33a57979738e5ab13950ec1c0e7298e41ef50929 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Patrick Ohly <patrick.ohly@intel.com>
|
||||||
|
Date: Thu, 23 Feb 2017 18:10:47 +0100
|
||||||
|
Subject: [PATCH] aslfiles.c: manipulate fds instead of FILE
|
||||||
|
|
||||||
|
Copying what stdout/stderr point to is not portable and fails with
|
||||||
|
musl because FILE is an undefined struct.
|
||||||
|
|
||||||
|
Instead, use lower-level Unix functions to modify the file that stderr
|
||||||
|
writes into. This works on the platforms that Yocto targets.
|
||||||
|
|
||||||
|
Upstream-Status: Inappropriate [embedded specific]
|
||||||
|
|
||||||
|
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
|
||||||
|
---
|
||||||
|
source/compiler/aslfiles.c | 20 +++++++++++---------
|
||||||
|
1 file changed, 11 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/source/compiler/aslfiles.c b/source/compiler/aslfiles.c
|
||||||
|
index 947e465..7a352b4 100644
|
||||||
|
--- a/source/compiler/aslfiles.c
|
||||||
|
+++ b/source/compiler/aslfiles.c
|
||||||
|
@@ -44,6 +44,11 @@
|
||||||
|
#include "aslcompiler.h"
|
||||||
|
#include "acapps.h"
|
||||||
|
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <sys/stat.h>
|
||||||
|
+#include <fcntl.h>
|
||||||
|
+#include <unistd.h>
|
||||||
|
+
|
||||||
|
#define _COMPONENT ACPI_COMPILER
|
||||||
|
ACPI_MODULE_NAME ("aslfiles")
|
||||||
|
|
||||||
|
@@ -569,6 +574,8 @@ FlOpenMiscOutputFiles (
|
||||||
|
|
||||||
|
if (Gbl_DebugFlag)
|
||||||
|
{
|
||||||
|
+ int fd;
|
||||||
|
+
|
||||||
|
Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_DEBUG);
|
||||||
|
if (!Filename)
|
||||||
|
{
|
||||||
|
@@ -582,20 +589,15 @@ FlOpenMiscOutputFiles (
|
||||||
|
/* TBD: hide this behind a FlReopenFile function */
|
||||||
|
|
||||||
|
Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Filename = Filename;
|
||||||
|
- Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle =
|
||||||
|
- freopen (Filename, "w+t", stderr);
|
||||||
|
-
|
||||||
|
- if (!Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle)
|
||||||
|
+ fd = open(Filename, O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
|
||||||
|
+ if (fd < 0 ||
|
||||||
|
+ dup2(fd, fileno(stderr)))
|
||||||
|
{
|
||||||
|
- /*
|
||||||
|
- * A problem with freopen is that on error,
|
||||||
|
- * we no longer have stderr.
|
||||||
|
- */
|
||||||
|
Gbl_DebugFlag = FALSE;
|
||||||
|
- memcpy (stderr, stdout, sizeof (FILE));
|
||||||
|
FlFileError (ASL_FILE_DEBUG_OUTPUT, ASL_MSG_DEBUG_FILENAME);
|
||||||
|
AslAbort ();
|
||||||
|
}
|
||||||
|
+ Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle = stderr;
|
||||||
|
|
||||||
|
AslCompilerSignon (ASL_FILE_DEBUG_OUTPUT);
|
||||||
|
AslCompilerFileHeader (ASL_FILE_DEBUG_OUTPUT);
|
||||||
|
--
|
||||||
|
2.1.4
|
||||||
|
|
||||||
Reference in New Issue
Block a user