All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V4] util/oslib-posix : qemu_init_exec_dir implementation for Mac
@ 2020-06-16 16:10 David CARLIER
  2020-06-16 18:32 ` Peter Maydell
  2020-06-16 18:41 ` no-reply
  0 siblings, 2 replies; 3+ messages in thread
From: David CARLIER @ 2020-06-16 16:10 UTC (permalink / raw)
  To: QEMU Trivial, qemu-devel

From 7eef8b803cdb0e7148fdf894d2992052695c1ff8 Mon Sep 17 00:00:00 2001
From: David Carlier <devnexen@gmail.com>
Date: Tue, 26 May 2020 21:35:27 +0100
Subject: [PATCH] util/oslib-posix : qemu_init_exec_dir implementation for Mac

Using dyld API to get the full path of the current process.

Signed-off-by: David Carlier <devnexen@gmail.com>
---
 util/oslib-posix.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 916f1be224..3612c2c80e 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -57,6 +57,10 @@
 #include <lwp.h>
 #endif

+#ifdef __APPLE__
+#include <mach-o/dyld.h>
+#endif
+
 #include "qemu/mmap-alloc.h"

 #ifdef CONFIG_DEBUG_STACK_USAGE
@@ -375,6 +379,16 @@ void qemu_init_exec_dir(const char *argv0)
             p = buf;
         }
     }
+#elif defined(__APPLE__)
+    {
+        uint32_t len = sizeof(buf);
+        if (_NSGetExecutablePath(buf, &len) == 0) {
+     char fpath[PATH_MAX];
+            buf[len - 1] = 0;
+      realpath(buf, fpath);
+            p = fpath;
+        }
+    }
 #endif
     /* If we don't have any way of figuring out the actual executable
        location then try argv[0].  */
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH V4] util/oslib-posix : qemu_init_exec_dir implementation for Mac
  2020-06-16 16:10 [PATCH V4] util/oslib-posix : qemu_init_exec_dir implementation for Mac David CARLIER
@ 2020-06-16 18:32 ` Peter Maydell
  2020-06-16 18:41 ` no-reply
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2020-06-16 18:32 UTC (permalink / raw)
  To: David CARLIER; +Cc: QEMU Trivial, qemu-devel

On Tue, 16 Jun 2020 at 17:12, David CARLIER <devnexen@gmail.com> wrote:
>
> From 7eef8b803cdb0e7148fdf894d2992052695c1ff8 Mon Sep 17 00:00:00 2001
> From: David Carlier <devnexen@gmail.com>
> Date: Tue, 26 May 2020 21:35:27 +0100
> Subject: [PATCH] util/oslib-posix : qemu_init_exec_dir implementation for Mac
>
> Using dyld API to get the full path of the current process.
>
> Signed-off-by: David Carlier <devnexen@gmail.com>
> ---
>  util/oslib-posix.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/util/oslib-posix.c b/util/oslib-posix.c
> index 916f1be224..3612c2c80e 100644
> --- a/util/oslib-posix.c
> +++ b/util/oslib-posix.c
> @@ -57,6 +57,10 @@
>  #include <lwp.h>
>  #endif
>
> +#ifdef __APPLE__
> +#include <mach-o/dyld.h>
> +#endif
> +
>  #include "qemu/mmap-alloc.h"
>
>  #ifdef CONFIG_DEBUG_STACK_USAGE
> @@ -375,6 +379,16 @@ void qemu_init_exec_dir(const char *argv0)
>              p = buf;
>          }
>      }
> +#elif defined(__APPLE__)
> +    {
> +        uint32_t len = sizeof(buf);
> +        if (_NSGetExecutablePath(buf, &len) == 0) {
> +     char fpath[PATH_MAX];

(Something seems to have gone wrong with the indentation here;
QEMU indent is always-spaces, 4-spaces-per-indent.)

> +            buf[len - 1] = 0;

_NSGetExecutablePath() will 0-terminate the string, so
you don't need to write this 0 here. (The function call
will fail if the buffer is not long enough for both the
path string and the terminating NUL character.)

> +      realpath(buf, fpath);

You need to check the return value from realpath() in
case it returns an error; compare the code just below
that handles calling realpath() on argv0.

> +            p = fpath;

This is setting p to a pointer to a buffer which goes
out of scope, and then using it after it's out of scope,
which is undefined behaviour. You can avoid that by
doing _NSGetExecutablePath() into the tightly-scoped
'fpath[]', and then doing realpath() into 'buf[]'
(which is still live to the end of the function).

> +        }
> +    }
>  #endif
>      /* If we don't have any way of figuring out the actual executable
>         location then try argv[0].  */

thanks
-- PMM


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH V4] util/oslib-posix : qemu_init_exec_dir implementation for Mac
  2020-06-16 16:10 [PATCH V4] util/oslib-posix : qemu_init_exec_dir implementation for Mac David CARLIER
  2020-06-16 18:32 ` Peter Maydell
@ 2020-06-16 18:41 ` no-reply
  1 sibling, 0 replies; 3+ messages in thread
From: no-reply @ 2020-06-16 18:41 UTC (permalink / raw)
  To: devnexen; +Cc: qemu-trivial, qemu-devel

Patchew URL: https://patchew.org/QEMU/CA+XhMqx6VjRhT6xBzJ-UYs7cPDXVK=PNdfNVdad3Tqhe43P=Ew@mail.gmail.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [PATCH V4] util/oslib-posix : qemu_init_exec_dir implementation for Mac
Type: series
Message-id: CA+XhMqx6VjRhT6xBzJ-UYs7cPDXVK=PNdfNVdad3Tqhe43P=Ew@mail.gmail.com

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Switched to a new branch 'test'
4ae8a07 util/oslib-posix : qemu_init_exec_dir implementation for Mac

=== OUTPUT BEGIN ===
WARNING: architecture specific defines should be avoided
#25: FILE: util/oslib-posix.c:60:
+#ifdef __APPLE__

ERROR: suspect code indent for conditional statements (8, 5)
#39: FILE: util/oslib-posix.c:385:
+        if (_NSGetExecutablePath(buf, &len) == 0) {
+     char fpath[PATH_MAX];

total: 1 errors, 1 warnings, 26 lines checked

Commit 4ae8a07edc80 (util/oslib-posix : qemu_init_exec_dir implementation for Mac) has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/CA+XhMqx6VjRhT6xBzJ-UYs7cPDXVK=PNdfNVdad3Tqhe43P=Ew@mail.gmail.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-06-16 18:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-16 16:10 [PATCH V4] util/oslib-posix : qemu_init_exec_dir implementation for Mac David CARLIER
2020-06-16 18:32 ` Peter Maydell
2020-06-16 18:41 ` no-reply

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.