[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <mvmd1n0idv8.fsf@hawking.suse.de>
Date: Wed, 29 Jun 2016 10:43:55 +0200
From: Andreas Schwab <schwab@...e.de>
To: Yury Norov <ynorov@...iumnetworks.com>
Cc: <libc-alpha@...rceware.org>, <linux-kernel@...r.kernel.org>,
<arnd@...db.de>, <catalin.marinas@....com>,
<marcus.shawcroft@....com>, <philb@....org>, <davem@...emloft.net>,
<szabolcs.nagy@....com>, <maxim.kuvyrkov@...aro.org>,
<joseph@...esourcery.com>, <pinskia@...il.com>,
<bamvor.zhangjian@...wei.com>, <fweimer@...hat.com>,
<Prasun.Kapoor@...ium.com>, <cmetcalf@...lanox.com>,
<hjl.tools@...il.com>, <adhemerval.zanella@...aro.org>,
Andrew Pinski <apinski@...ium.com>
Subject: Re: [PATCH 16/23] [AARCH64] Make lp64 and ilp32 directories.
Yury Norov <ynorov@...iumnetworks.com> writes:
> diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c
> new file mode 100644
> index 0000000..1183f49
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c
> @@ -0,0 +1,77 @@
> +/* Copyright (C) 2007-2015 Free Software Foundation, Inc.
> + This file is part of the GNU C Library.
> +
> + The GNU C Library is free software; you can redistribute it and/or
> + modify it under the terms of the GNU Lesser General Public
> + License as published by the Free Software Foundation; either
> + version 2.1 of the License, or (at your option) any later version.
> +
> + The GNU C Library is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + Lesser General Public License for more details.
> +
> + You should have received a copy of the GNU Lesser General Public
> + License along with the GNU C Library. If not, see
> + <http://www.gnu.org/licenses/>. */
> +
> +#include <dirent.h>
> +#include <stddef.h>
> +#include <stdint.h>
> +#include <string.h>
> +#include <unistd.h>
> +#include <sys/types.h>
> +#include <bits/wordsize.h>
> +
> +#include <sysdep.h>
> +#include <sys/syscall.h>
> +#include <linux/posix_types.h>
> +
> +struct kernel_dirent64
> + {
> + uint64_t d_ino;
> + int64_t d_off;
> + unsigned short int d_reclen;
> + unsigned char d_type;
> + char d_name[256];
> + };
> +
> +static size_t conv (char *buf, size_t nbytes)
> +{
> + char *end = buf + nbytes;
> + struct dirent *u = (struct dirent *) buf;
> + struct kernel_dirent64 *k = (struct kernel_dirent64 *) buf;
> + size_t sizd = offsetof(struct kernel_dirent64, d_name)
> + - offsetof(struct dirent, d_name);
> +
> + while ((char*) k < end)
> + {
> + struct kernel_dirent64 *nk = (char *) k + k->d_reclen;
> + size_t name_len = k->d_reclen - offsetof(struct kernel_dirent64, d_name);
> +
> + u->d_ino = k->d_ino;
> + u->d_off = k->d_off;
> + u->d_reclen = k->d_reclen - sizd;
> + u->d_type = k->d_type;
> + memcpy (u->d_name, k->d_name, name_len);
> +
> + u = (char *) u + u->d_reclen;
> + k = nk;
> +}
../sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c: In function 'conv':
../sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c:49:36: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
struct kernel_dirent64 *nk = (char *) k + k->d_reclen;
^
../sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c:58:9: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
u = (char *) u + u->d_reclen;
^
Andreas.
--
Andreas Schwab, SUSE Labs, schwab@...e.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
Powered by blists - more mailing lists