Commit Graph

5 Commits

Author SHA1 Message Date
Jim Mussared 9be0623d4c shared/libc/string0: Don't deref args for n==0 case.
C99 says that strncmp has UB for either string being NULL, so the
current behavior is technically correct, but it's an easy fix to handle
this case correctly.

7.1.4: "unless explicitly stated otherwise in the detailed
description... if an argument to a function has ...null pointer.. the
behavior is undefined".

7.21.1: "Unless explicitly stated otherwise in the description of a
particular function in this subclause, pointer arguments on such a call
shall still have valid values, as described in 7.1.4".

Also make the same change for the minimal version in bare-arm/lib.c.

This work was funded through GitHub Sponsors.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-11-07 16:01:50 +11:00
Damien George b85611dae8 shared/libc/printf: Fix stdout destination for putchar and puts.
These functions should output to the same location as printf in this file.

Signed-off-by: Damien George <damien@micropython.org>
2023-05-31 16:08:44 +10:00
Damien George 78dc2db2ba py/mpconfig: Provide config option for internal printf printer.
The C-level printf is usually used for internal debugging prints, and a
port/board may want to redirect this somewhere other than stdout.

Signed-off-by: Damien George <damien@micropython.org>
2023-03-10 11:19:15 +11:00
Alexey 'alexxy' Shvetsov 5cf71b5596 shared/libc/string0: Don't include string.h, and provide __memcpy_chk.
Some toolchains will have string.h defining various macros which can lead
to compile errors for string function implementations.  Not including
string.h fixes this.

An implementation of __memcpy_chk is provided for toolchains that enable
_FORTIFY_SOURCE.

Fixes issue #6046.

Signed-off-by: Alexey 'alexxy' Shvetsov <alexxyum@gmail.com>
2021-11-17 13:58:07 +11:00
Damien George 4d546713ec shared: Introduce new top-level dir and move 1st party lib code there.
This commit moves all first-party code developed for this project from lib/
to shared/, so that lib/ now only contains third-party code.

The following directories are moved as-is from lib to shared:

    lib/libc            -> shared/libc
    lib/memzip          -> shared/memzip
    lib/netutils        -> shared/netutils
    lib/timeutils       -> shared/timeutils
    lib/upytesthelper   -> shared/upytesthelper

All files in lib/embed/ have been moved to shared/libc/.

lib/mp-readline has been moved to shared/readline.

lib/utils has been moved to shared/runtime, with the exception of
lib/utils/printf.c which has been moved to shared/libc/printf.c.

Signed-off-by: Damien George <damien@micropython.org>
2021-07-12 17:07:36 +10:00