🔨 BSD string workaround (#26532)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
parent
f02fa6339f
commit
5b74e25108
|
@ -19,6 +19,7 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef __PLAT_LINUX__
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
@ -57,4 +58,49 @@ uint16_t MarlinHAL::adc_value() {
|
|||
|
||||
void MarlinHAL::reboot() { /* Reset the application state and GPIO */ }
|
||||
|
||||
// ------------------------
|
||||
// BSD String
|
||||
// ------------------------
|
||||
|
||||
/**
|
||||
* Copyright (c) 1998, 2015 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef HAS_LIBBSD
|
||||
|
||||
/**
|
||||
* Copy string src to buffer dst of size dsize. At most dsize-1
|
||||
* chars will be copied. Always NUL terminates (unless dsize == 0).
|
||||
* Returns strlen(src); if retval >= dsize, truncation occurred.
|
||||
*/
|
||||
size_t MarlinHAL::_strlcpy(char *dst, const char *src, size_t dsize) {
|
||||
const char *osrc = src;
|
||||
size_t nleft = dsize;
|
||||
|
||||
// Copy as many bytes as will fit.
|
||||
if (nleft != 0) while (--nleft != 0) if ((*dst++ = *src++) == '\0') break;
|
||||
|
||||
// Not enough room in dst, add NUL and traverse rest of src.
|
||||
if (nleft == 0) {
|
||||
if (dsize != 0) *dst = '\0'; // NUL-terminate dst
|
||||
while (*src++) { /* nada */ }
|
||||
}
|
||||
|
||||
return (src - osrc - 1); // count does not include NUL
|
||||
}
|
||||
|
||||
#endif // HAS_LIBBSD
|
||||
|
||||
#endif // __PLAT_LINUX__
|
||||
|
|
|
@ -26,6 +26,11 @@
|
|||
#include <iostream>
|
||||
#include <stdint.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#ifdef HAS_LIBBSD
|
||||
#include <bsd/string.h>
|
||||
#endif
|
||||
|
||||
#undef min
|
||||
#undef max
|
||||
#include <algorithm>
|
||||
|
@ -162,4 +167,13 @@ public:
|
|||
}
|
||||
|
||||
static void set_pwm_frequency(const pin_t, int) {}
|
||||
|
||||
#ifndef HAS_LIBBSD
|
||||
/**
|
||||
* Redirect missing strlcpy here
|
||||
*/
|
||||
static size_t _strlcpy(char *dst, const char *src, size_t dsize);
|
||||
#define strlcpy hal._strlcpy
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
@ -28,9 +28,6 @@
|
|||
|
||||
#include <pinmapping.h>
|
||||
|
||||
#define strlcpy(A, B, C) strncpy(A, B, (C) - 1)
|
||||
#define strlcpy_P(A, B, C) strncpy_P(A, B, (C) - 1)
|
||||
|
||||
#define HIGH 0x01
|
||||
#define LOW 0x00
|
||||
|
||||
|
|
67
Marlin/src/HAL/NATIVE_SIM/HAL.cpp
Normal file
67
Marlin/src/HAL/NATIVE_SIM/HAL.cpp
Normal file
|
@ -0,0 +1,67 @@
|
|||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Copyright (c) 1998, 2015 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef __PLAT_NATIVE_SIM__
|
||||
|
||||
#ifndef HAS_LIBBSD
|
||||
|
||||
#include "HAL.h"
|
||||
|
||||
/**
|
||||
* Copy string src to buffer dst of size dsize. At most dsize-1
|
||||
* chars will be copied. Always NUL terminates (unless dsize == 0).
|
||||
* Returns strlen(src); if retval >= dsize, truncation occurred.
|
||||
*/
|
||||
size_t MarlinHAL::_strlcpy(char *dst, const char *src, size_t dsize) {
|
||||
const char *osrc = src;
|
||||
size_t nleft = dsize;
|
||||
|
||||
// Copy as many bytes as will fit.
|
||||
if (nleft != 0) while (--nleft != 0) if ((*dst++ = *src++) == '\0') break;
|
||||
|
||||
// Not enough room in dst, add NUL and traverse rest of src.
|
||||
if (nleft == 0) {
|
||||
if (dsize != 0) *dst = '\0'; // NUL-terminate dst
|
||||
while (*src++) { /* nada */ }
|
||||
}
|
||||
|
||||
return (src - osrc - 1); // count does not include NUL
|
||||
}
|
||||
|
||||
#endif // HAS_LIBBSD
|
||||
#endif // __PLAT_NATIVE_SIM__
|
|
@ -263,4 +263,14 @@ public:
|
|||
analogWrite(pin, v);
|
||||
}
|
||||
|
||||
static void set_pwm_frequency(const pin_t, int) {}
|
||||
|
||||
#ifndef HAS_LIBBSD
|
||||
/**
|
||||
* Redirect missing strlcpy here
|
||||
*/
|
||||
static size_t _strlcpy(char *dst, const char *src, size_t dsize);
|
||||
#define strlcpy hal._strlcpy
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
@ -30,6 +30,16 @@
|
|||
// Extras for CI testing
|
||||
#endif
|
||||
|
||||
// Arduino IDE with Teensy Additions
|
||||
#ifdef TEENSYDUINO
|
||||
#undef max
|
||||
#define max(a,b) ((a)>(b)?(a):(b))
|
||||
#undef min
|
||||
#define min(a,b) ((a)<(b)?(a):(b))
|
||||
#undef NOT_A_PIN // Override Teensyduino legacy CapSense define work-around
|
||||
#define NOT_A_PIN 0 // For PINS_DEBUGGING
|
||||
#endif
|
||||
|
||||
// ADC
|
||||
#ifdef BOARD_ADC_VREF_MV
|
||||
#define ADC_VREF_MV BOARD_ADC_VREF_MV
|
||||
|
@ -64,16 +74,6 @@
|
|||
#undef OTA_FIRMWARE_UPDATE
|
||||
#endif
|
||||
|
||||
#ifdef TEENSYDUINO
|
||||
#undef max
|
||||
#define max(a,b) ((a)>(b)?(a):(b))
|
||||
#undef min
|
||||
#define min(a,b) ((a)<(b)?(a):(b))
|
||||
|
||||
#undef NOT_A_PIN // Override Teensyduino legacy CapSense define work-around
|
||||
#define NOT_A_PIN 0 // For PINS_DEBUGGING
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Axis lengths and center
|
||||
*/
|
||||
|
|
|
@ -36,7 +36,8 @@ build_src_filter = ${common.default_src_filter} +<src/HAL/LINUX>
|
|||
[simulator_common]
|
||||
platform = native
|
||||
framework =
|
||||
build_flags = ${common.build_flags} -std=gnu++17 -D__PLAT_NATIVE_SIM__ -DU8G_HAL_LINKS -I/usr/include/SDL2 -IMarlin -IMarlin/src/HAL/NATIVE_SIM/u8g
|
||||
build_flags = ${common.build_flags} -std=gnu++17 -D__PLAT_NATIVE_SIM__ -DU8G_HAL_LINKS
|
||||
-I/usr/include/SDL2 -IMarlin -IMarlin/src/HAL/NATIVE_SIM/u8g
|
||||
build_src_flags = -Wall -Wno-expansion-to-defined -Wno-deprecated-declarations -Wcast-align
|
||||
release_flags = -g0 -O3 -flto
|
||||
debug_build_flags = -fstack-protector-strong -g -g3 -ggdb
|
||||
|
@ -99,6 +100,7 @@ build_flags = ${simulator_linux.build_flags} ${simulator_linux.release_flags}
|
|||
[simulator_macos]
|
||||
build_unflags = -lGL -fstack-protector-strong
|
||||
build_flags =
|
||||
-DHAS_LIBBSD
|
||||
-I/opt/local/include
|
||||
-I/opt/local/include/freetype2
|
||||
-I/opt/local/include/SDL2/
|
||||
|
@ -135,5 +137,8 @@ custom_gcc = g++
|
|||
[env:simulator_windows]
|
||||
extends = simulator_common
|
||||
build_src_flags = ${simulator_common.build_src_flags} -fpermissive
|
||||
build_flags = ${simulator_common.build_flags} ${simulator_common.debug_build_flags} -IC:\\msys64\\mingw64\\include\\SDL2 -fno-stack-protector -Wl,-subsystem,windows -ldl -lmingw32 -lSDL2main -lSDL2 -lSDL2_net -lopengl32 -lssp
|
||||
build_flags = ${simulator_common.build_flags} ${simulator_common.debug_build_flags}
|
||||
-IC:\\msys64\\mingw64\\include\\SDL2 -fno-stack-protector -Wl,-subsystem,windows
|
||||
-ldl -lmingw32 -lSDL2main -lSDL2 -lSDL2_net -lopengl32 -lssp
|
||||
-DHAS_LIBBSD
|
||||
build_type = debug
|
||||
|
|
Loading…
Reference in a new issue