🔨 BSD string workaround (#26532)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __PLAT_LINUX__
|
#ifdef __PLAT_LINUX__
|
||||||
|
|
||||||
#include "../../inc/MarlinConfig.h"
|
#include "../../inc/MarlinConfig.h"
|
||||||
@@ -57,4 +58,49 @@ uint16_t MarlinHAL::adc_value() {
|
|||||||
|
|
||||||
void MarlinHAL::reboot() { /* Reset the application state and GPIO */ }
|
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__
|
#endif // __PLAT_LINUX__
|
||||||
|
@@ -26,6 +26,11 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#ifdef HAS_LIBBSD
|
||||||
|
#include <bsd/string.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#undef min
|
#undef min
|
||||||
#undef max
|
#undef max
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@@ -162,4 +167,13 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void set_pwm_frequency(const pin_t, int) {}
|
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>
|
#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 HIGH 0x01
|
||||||
#define LOW 0x00
|
#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);
|
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
|
// Extras for CI testing
|
||||||
#endif
|
#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
|
// ADC
|
||||||
#ifdef BOARD_ADC_VREF_MV
|
#ifdef BOARD_ADC_VREF_MV
|
||||||
#define ADC_VREF_MV BOARD_ADC_VREF_MV
|
#define ADC_VREF_MV BOARD_ADC_VREF_MV
|
||||||
@@ -64,16 +74,6 @@
|
|||||||
#undef OTA_FIRMWARE_UPDATE
|
#undef OTA_FIRMWARE_UPDATE
|
||||||
#endif
|
#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
|
* Axis lengths and center
|
||||||
*/
|
*/
|
||||||
|
@@ -36,7 +36,8 @@ build_src_filter = ${common.default_src_filter} +<src/HAL/LINUX>
|
|||||||
[simulator_common]
|
[simulator_common]
|
||||||
platform = native
|
platform = native
|
||||||
framework =
|
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
|
build_src_flags = -Wall -Wno-expansion-to-defined -Wno-deprecated-declarations -Wcast-align
|
||||||
release_flags = -g0 -O3 -flto
|
release_flags = -g0 -O3 -flto
|
||||||
debug_build_flags = -fstack-protector-strong -g -g3 -ggdb
|
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]
|
[simulator_macos]
|
||||||
build_unflags = -lGL -fstack-protector-strong
|
build_unflags = -lGL -fstack-protector-strong
|
||||||
build_flags =
|
build_flags =
|
||||||
|
-DHAS_LIBBSD
|
||||||
-I/opt/local/include
|
-I/opt/local/include
|
||||||
-I/opt/local/include/freetype2
|
-I/opt/local/include/freetype2
|
||||||
-I/opt/local/include/SDL2/
|
-I/opt/local/include/SDL2/
|
||||||
@@ -135,5 +137,8 @@ custom_gcc = g++
|
|||||||
[env:simulator_windows]
|
[env:simulator_windows]
|
||||||
extends = simulator_common
|
extends = simulator_common
|
||||||
build_src_flags = ${simulator_common.build_src_flags} -fpermissive
|
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
|
build_type = debug
|
||||||
|
Reference in New Issue
Block a user